小编Doe*_*oes的帖子

带有 apache mod_proxy_wstunnel 的 Websocket 不起作用

我做了一个很好的准备:Apache 2.4 + PHP7 + WebSocket
访问这个链接查看我的准备
细节:Cannot load modules/mod_proxy_wstunnel.so into server
但是当我运行一个简单的WebSocket演示时,我遇到了一些问题。我不知道如何解决它们。

Websocket 对我来说是一个新概念。我了解到 Apache 2.4 支持带有mod_proxy_wstunnel.so.
我的步骤:

  1. 编辑 httpd.conf,加载mod_proxymod_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)
  1. 添加代理(仍在 httpd 中)
ProxyPass /ws ws://10.180.0.123/
ProxyPassReverse /ws ws://10.180.0.123/
Run Code Online (Sandbox Code Playgroud)
  1. 创建 HTML 客户端和 PHP 服务器 ( 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)

mod-proxy websocket apache2.4

5
推荐指数
1
解决办法
6374
查看次数

打开组后的新布局不是基于 cola.js 的最后一个布局

我最近了解了一个优秀的 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)

javascript visibility d3.js force-layout webcola

5
推荐指数
1
解决办法
468
查看次数

无法将 module/mod_proxy_wstunnel.so 加载到服务器中

最近我需要将 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\n

我自己编译了它们,但遇到了问题:

\n\n

httpd: 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
    \n
  • 环境信息:
  • \n
  • 操作系统:centos 6.8
  • \n
  • php:php-7.0.10
  • \n
  • 阿帕奇:httpd-2.4.23
  • \n
\n\n

我的步骤是:

\n\n
    \n
  1. 下载源代码。\n\n
      \n
    • php7 github.com/php/php-src/releases/tag/php-7.0.10
    • \n
    • apache2.4 github.com/apache/httpd/releases/tag/2.4.23
    • \n
  2. \n
  3. 复制到我的工作区并 tar\xef\xbc\x8csay /home\n\n
      \n
    • shell> tar -xjf php-7.0.10.tar.bz2
    • \n
    • shell> tar -xjf httpd-2.4.23.tar.bz2
    • \n
  4. \n
  5. 安装 gcc : yum install gcc
  6. \n
  7. 编译 apache\n\n
      \n …

mod-proxy websocket apache2.4

4
推荐指数
1
解决办法
6397
查看次数

如何使用 cytoscape.js 为每个组设置不同的颜色

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)

任何帮助是极大的赞赏。

background-color cytoscape.js

2
推荐指数
1
解决办法
1164
查看次数