【问题标题】:socket.io doesn't work on herokusocket.io 在 heroku 上不起作用
【发布时间】:2014-12-08 09:37:15
【问题描述】:

我是 socket.io 和 heroku 的新手。我编写了简单的聊天系统,但是当我在 Heroku 上发布它时它不起作用。 应用程序.js

var port = process.env.PORT || 3000;

var io   = require('socket.io')(port);
// var url  = require('url');


io.on('connection', function(socket,d) {
    socket.on('sendMsg', function(data) {
        console.log('SEND msg');
        console.log(data);
        io.emit('getMsg',data);
    });

    console.log(socket.handshake.query.id);
});

在客户端:

 <script src="http://chatserversm.herokuapp.com:3000/socket.io/socket.io.js"></script>
        <script>
            var socket = io('http://chatserversm.herokuapp.com:3000?id=2');
            ....

我错在哪里?

【问题讨论】:

    标签: node.js heroku socket.io


    【解决方案1】:

    您的客户端尝试连接到端口 3000,但在 Heroku 上,process.env.PORT 设置为 80。

    Heroku 只公开端口 80(和 SSL 的 443),因此您必须更改客户端以连接到该端口。

    请注意,它应该可以与同一端口上的 HTTP 服务器正常工作。

    编辑:这是你应该做的。

    首先,您需要您的客户端连接到正确的端口:

    var socket = io('http://chatserversm.herokuapp.com:80?id=2');
    

    既然已经隐含了 80 端口,你也可以这样写:

    var socket = io('http://chatserversm.herokuapp.com?id=2');
    

    另一个类似的问题是你试图从 3000 端口获取socket.io.js,所以你还需要更改为:

    <script src="http://chatserversm.herokuapp.com/socket.io/socket.io.js"></script>
    

    【讨论】:

    • 感谢 Liadmat 的回复。我将如何更改代码?
    • 我添加了一些说明,如果有帮助请告诉我
    • 天哪,这就是我要说的!!在尝试了很多其他事情之后,端口 443 为我工作!
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2013-11-23
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2021-03-05
    相关资源
    最近更新 更多