我是socket.io和heroku的新手。我写了一个简单的聊天系统但是当我在Heroku上发布它时它不起作用。 app.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');
....
我哪里错了?
答案 0 :(得分: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>