如何在域上进行Node/Socket.io聊天时进行通信?

lit*_*m84 5 javascript deployment node.js socket.io

我已经成功地用Node JS和Socket.io编写了一个非常简单的实时聊天.它还使用Express,Jade和Stylus - 我想进一步发展.

这里的当前代码在这里(这在本地工作):https://github.com/littlejim84/basic_node_socket

这一切都运行良好,并在我的本地计算机上按预期工作.运行Node应用程序并转到http:// localhost:9000 /使事情按预期工作.但是当我把它放在我的远程服务器上时,套接字没有连接.我已经将Ngnix设置为服务器我的Node应用程序,如下所示:

upstream basic_node_socket { 
    server 127.0.0.1:9000; 
} 

server { 
    listen   80; 
    server_name  example.com; 

    location /basic_node_socket { 
        root /var/www/example.com/basic_node_socket; 

        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header Host $http_host; 
        proxy_set_header X-NginX-Proxy true; 

        proxy_pass http://basic_node_socket/; 
        proxy_redirect off; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以转到网址,它将按预期服务器我的Node应用程序,但套接字只是不会连接.我假设这是因为现在在客户端,我正在收听端口9000,这可能已经没有任何相关性,现在它正以这种方式提供服务?

在我的客户端脚本中我有这个(它在本地工作):

socket = new io.Socket(null, {port: 9000});
Run Code Online (Sandbox Code Playgroud)

我不是Node的专家,我试图绕过它.任何人都可以帮助我在远程服务器上按预期工作吗?

任何帮助将不胜感激.

更新: 我看到这个链接似乎详细解释了我的问题:http://community.webfaction.com/questions/3448/using-websockets-with-a-nodejs-custom-app

...这很好,我知道我可能需要一个专用IP,所以我可以纯粹在端口80上运行Node,并让我的一个域名指向那个IP(或者我可以使用像Nodestar这样的东西).但我想把东西放在我自己的VPS上.这似乎很好,只要我有一个Node应用程序运行.但是,如果我想在新的专用IP地址上运行两个或三个Node JS应用程序呢?这是我不明白的一点.我见过Node JS的各种vhost类型设置,但我不确定如何干净利落地实现它.

Bjo*_*orn -1

您可以运行单个 http 服务器并根据请求中的域或其他信息路由请求。使用此方法,您可以为在同一服务器上使用相同 IP 地址的不同域提供完全不同的站点。可能有一两个模块可以帮助您解决此问题。对于多个socket.io实例,您可以在不同的端口上启动http服务器,并使用它们在同一台机器上运行任意数量的socket.io实例。