我做了一个很好的准备:Apache 2.4 + PHP7 + WebSocket
访问这个链接查看我的准备
细节:Cannot load modules/mod_proxy_wstunnel.so into server
但是当我运行一个简单的WebSocket演示时,我遇到了一些问题。我不知道如何解决它们。
Websocket 对我来说是一个新概念。我了解到 Apache 2.4 支持带有mod_proxy_wstunnel.so.
我的步骤:
mod_proxy和mod_proxy_wstunnel(当然都在 apachedir/modules 中)LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
Run Code Online (Sandbox Code Playgroud)
ProxyPass /ws ws://10.180.0.123/
ProxyPassReverse /ws ws://10.180.0.123/
Run Code Online (Sandbox Code Playgroud)
cd apachedir/htdocs)客户端.html
<html>
<script>
var socket = new WebSocket("ws://10.180.0.123/server.php");
socket.onopen = function(e){
console.log("open success");
}
socket.onmessage = function(e){
console.log("mes:"+e);
}
//socket.close();
socket.send("Hello World");
</script>
<html>
Run Code Online (Sandbox Code Playgroud)
服务器.php
<?php …Run Code Online (Sandbox Code Playgroud) 我最近了解了一个优秀的 JS 库 cola.js 。它可以做一个力量布局和支持团体。在此处了解更多信息:Cola.js
我创建了一个简单的演示来显示具有打开组功能的力布局。但我对打开行为感到困惑。
我觉得打开一个组的时候,新的布局应该是在上一个布局的基础上做一个小的调整。但现在它重新布局所有节点。为什么 ?
我从这个链接中学到了一些理想:官方演示:在线图探索,看起来很复杂。动态添加到图中的新节点的坐标应设置为打开组的坐标。不幸的是,它也无法解决我的问题。
以下是我的演示:
var w = 480, h = 420, cola;
var data = {
"nodes": [
{"name": "Top","width": 60,"height": 60},
{"name": "A","width": 60,"height": 60},
{"name": "B","width": 60,"height": 60},
{"name": "C","width": 60,"height": 60},
{"name": "D","width": 60,"height": 60},
{"name": "E","width": 60,"height": 60},
{"name": "F","width": 60,"height": 60},
{"name": "G","width": 60,"height": 60},
{"name": "H","width": 60,"height": 60},
{"name": "I","width": 60,"height": 60}
],
"links": [
{"source": 0,"target": 6},
{"source": 0,"target": 4},
{"source": 0,"target": 3},
{"source": …Run Code Online (Sandbox Code Playgroud)最近我需要将 websocket 服务器与 apache2\xef\xbc\x8can 集成,我发现 apache2.4 已支持带有以下模块的 websocket:mod_proxy_wstunnel.\n http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html
我自己编译了它们,但遇到了问题:
\n\nhttpd: Syntax error on line 122 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_proxy_wstunnel.so into server: /usr/local/apache2/modules/mod_proxy_wstunnel.so: undefined symbol: ap_proxy_release_connection
我的步骤是:
\n\n我cytoscape.js最近正在学习,并且知道使用以下代码为组设置背景颜色:
{
selector: ':parent',
style: {
'background-color': '#ededeb',
'background-opacity': 0.8
}
}
Run Code Online (Sandbox Code Playgroud)
但是,所有组的背景颜色都以这种方式设置为#ededeb。看下图,我无法区分黄色区域上的节点是属于子组group01还是父组group0。
我希望为每个组设置不同的颜色,以便于识别组。我想代码应该是这样的:
const COLORS = [0x11, 0x22, 0x22, 0x33, ...];// Predefined colors array
let groupColorMap = {}, colorIndex = 0;
cytoscape.stylesheet().selector(':parent').setBackgroundColor(function(node){
if(groupColorMap[node.id]){
return groupColorMap[node.id];
}else{
return groupColorMap[node.id] = COLORS[(colorIndex++)%COLORS.length];
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏。
apache2.4 ×2
mod-proxy ×2
websocket ×2
cytoscape.js ×1
d3.js ×1
force-layout ×1
javascript ×1
visibility ×1
webcola ×1