node.js – 使用lighttpd重定向端口80上的websocket流量

我有一个托管在lighttpd上的网站,可在“www”子域访问.我还有一个聊天服务器在端口8124上侦听node.js和socket.io.

我希望所有客户端流量都发生在端口80上,方法是将所有请求重定向到“chat”子域到端口8124.所以我启用了mod_proxy并在lighttpd.conf中添加了:

$HTTP["host"] == "chat.myserver.com" {
    proxy.server = (
            "" => ((
                    "host" => "78.128.79.192","port" => "8124"
            ))
    )
}

在客户端,当我连接到websocket时,

var socket = io.connect('http://chat.myserver.com');

我从node.js得到了正确的消息:

debug - client authorized
info  - handshake authorized 6067470561567883577
debug - setting request GET /socket.io/1/websocket/6067470561567883577
debug - set heartbeat interval for client 6067470561567883577
debug - client authorized for 
debug - websocket writing 1::

但浏览器出错:

Firefox can't connect to server ws://chat.myserver.com/socket.io/1/websocket/6067470561567883577

当然,如果我直接连接到端口8124,一切正常:

var socket = io.connect('http://www.myserver.com:8124');

但是,正如我所说,我希望所有客户端流量都在端口80上.它是否可能?

解决方法

已知mod_proxy与websockets不兼容.

HAProxy兼容(我自己没有测试过,但这里是article on its configuration for websockets).

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...