gpt4 book ai didi

javascript - 如何让我的 Node/Socket.io 聊天在域中进行通信?

转载 作者:搜寻专家 更新时间:2023-10-31 22:55:20 25 4
gpt4 key购买 nike

我已经成功地使用 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;
}
}

有了这个,我可以转到网址,它会像预期的那样为我的 Node 应用程序提供服务,但套接字就是无法连接。我猜这是因为现在在客户端,我正在监听端口 9000,现在它以这种方式提供服务,这可能不再相关了?

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

socket = new io.Socket(null, {port: 9000});

我不是 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 类型设置,但我不确定如何最好地干净地实现它。

最佳答案

我不确定这是否是您的问题并且没有直接处理过,但我的理解是您不能使用 nginx 代理 websockets。这可能就是您在使用 websockets 而不是其他请求时遇到问题的原因。

尝试使用: https://github.com/nodejitsu/node-http-proxy

我还听说 lighttpd 与 websockets 一起工作。

关于javascript - 如何让我的 Node/Socket.io 聊天在域中进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com