新的socket.io 1.0客户端尝试连接错误的端口

时间:2014-05-30 18:06:24

标签: socket.io-1.0

当尝试将我的网站和(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版运行相同的代码时 - 一切正常。

任何帮助?

1 个答案:

答案 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);