【问题标题】:Socket.io is served only with 8000 port and not served with any otherSocket.io 仅提供 8000 端口,不提供任何其他端口
【发布时间】:2013-10-25 12:52:21
【问题描述】:

试图自己解决这个问题,但失败了。

我的想法是我正在尝试运行 Yii 的“MjmChat”扩展(nodejs 上的聊天扩展)。实际上,它可以工作,但它只能在 8000 端口上工作。如果我设置任何不同于 8000 的端口,socket.io 将不为其 js 提供服务。

为了测试,我只是剪掉了所有的nodejs代码,所以看起来像

var express = require('express');

var app = express(), 
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(8000);

它位于我的测试服务器 (gs-test.ru) 的 Web 根目录中 所以当我跑步时

root@gs-test:/var/www/fortis/data/www/gs-test.ru# node app.js

http://gs-test.ru:8000/socket.io/socket.io.js 很好地服务于 js。

但是!如果我尝试将 8000 更改为 8001、9000、9999,无论如何(当然,停止当前的 app.js 然后重新启动它) - 它不起作用!就是无法加载socket.io.js。

我尝试的每个端口都是免费的(使用 #netstat -ntp 测试),所以我唯一的想法是问题出在 web 服务器配置中的 apache/nginx 或 smth 上(我在 fastvps.ru VDS 上运行 debian 挤压)。

提前致谢!

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    您是否违反了同源政策?方案、主机和端口必须匹配,否则浏览器将无法连接。许多人为此喜欢 haproxy。听起来您可以在所需端口上启动应用程序,但无法通过浏览器连接。这里也有运行快递应用吗?

    【讨论】:

    • 其实我不是很擅长服务器配置,我只是复制一些示例并为我的任务更改它们......那么运行 express 应用程序是什么意思?我是否不仅需要运行“node app.js”,还需要运行更多服务?
    • 你在浏览器中测试这个吗?我相信这可能会对您有所帮助:stackoverflow.com/a/12039741/2005565
    • 试图这样做,但我收到警告“Socket.IO 的 listen() 方法需要一个 http.Server 实例作为其第一个参数”,尽管 socket.io 启动,浏览器显示“无法获取 / socket.io/socket.io.js"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2010-12-08
    • 1970-01-01
    相关资源
    最近更新 更多