在现有页面上使用Socket.io和Node.js(使用nginx)?

时间:2013-04-17 09:00:48

标签: php node.js nginx socket.io

我正在尝试使用实时API扩展现有网页(NGINX + PHP5 + MySQL),以提供一些额外的数据(例如,页内聊天)。

在经历了一些独立的测试文档等之后,我实际上已经遇到了麻烦,只是建立一个简单的聊天示例:Socket.io不想工作,显然是因为依赖。

我正在尝试使用NodeJS / Socket.io 作为fdajax的替代方案 - 我从未打算在nodejs上构建我的整个(现有的)页面。所以,我的主要问题是,我如何“实施”这两个库,并使它们仍然有效(即使socket.io.js未提供nodejs

包含ReferenceError: require is not defined时,我当前的错误为ReferenceError: io is not definedsocket.io.js。显然,原因是函数require()可能无法正常工作,因为 - 好吧,nodejs不提供整个页面,但PHP确实如此(因此,我猜,缺少整个require()的东西)。

是否有人知道如何让socket.io工作,让nodejs传递整个页面,但仍然使用现有的NGINX + PHP设置?

我尝试了几件事,但还没找到一个好的提示。目标基本上是,只包括socket.io.js(和其他必需的东西),通过指定的端口(8080或其他)连接到nodejs webserver,然后编写一些代码。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

以下是其他答案/问题的完整示例 https://stackoverflow.com/a/14709236/1489655


您可以为websocket流量设置代理。

tcp {
    upstream websockets {
        ## node processes
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
        server 127.0.0.1:8004; 

        check interval=3000 rise=2 fall=5 timeout=1000;
    }   

    server {
        listen 127.0.0.1:80;
        server_name _;

        tcp_nodelay on;
        proxy_pass websockets;
    }
}

来源:http://www.letseehere.com/reverse-proxy-web-sockets

这应该允许您通过

连接到socket.io
var socket = new io.Socket('ws://localhost');