当尝试将我的网站和(nodejs + express + socket.io服务器)从socket.io 0.9升级到1.0时,立即遇到问题:socket.io客户端试图连接不在socket上的插件服务器正在侦听,但在正在运行使用客户端的网页的端口上。 不用说 - 一切都在socket.io 0.9上运行了一年没有问题......
所以,具体来说(一切都在localhost上运行): - node.js服务器:
var app = express();
var svr = http.Server(app);
require('socket.io').listen(svr);
svr.listen(3000);
- index.html(由另一个node.js进程在端口80上提供):
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
<script>
var socket = io('http://localhost:3000');
socket.on('test', function (data) {
console.log(data);
});
</script>
- 当我在chrome中运行此网页时,我在chrome js控制台中看到错误消息(该消息每隔一秒钟重复一次):
**GET http://localhost:80/socket.io/?EIO=2&transport=polling&t=1401472842589-6 404 (Not Found) socket.io.js?_dc=1401472822276:2604**
正如您所看到的,socket.io客户端库正在尝试连接到同一端口上的套接字服务器,因为网页正在运行 - 端口80 - 而不是使用websocket端口 - 端口3000。
再次,当我使用socket.io 0.9版运行相同的代码时 - 一切正常。
任何帮助?
答案 0 :(得分:1)
您正在配置错误的方式,当您使用express时,现在时间语法已更改为socket.io 1.0的较新版本。像快递中间件一样的语法。
请用户。
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(3000);
代码中的错误部分
require('socket.io').listen(svr);