套接字连接在收到握手响应之前closures

我已经从源代码编写套接字

我的代码看起来像这样。

var port = 8081; var app = require('http').createServer(); var io = require('socket.io')(app); app.listen(port); io.on('connection', function (socket) { console.log("New user connected."); socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); console.log("server listening on: " + port); 

但是当我在这里testing它(ws:// localhost:8081)。 我收到错误:未定义DISCONNECTED

在控制台中出现错误:

 WebSocket connection to 'ws://localhost:8081/?encoding=text' failed: Connection closed before receiving a handshake response 

您需要使用socket.io客户端库,从这里获取它,或者从您的页面引用CDN,如下所示:

 <script src="https://cdn.socket.io/socket.io-1.3.7.js"></script> 

此外,无论何时启动一个socket.io服务器,socket.io都将从http://<your-server-address>/socket.io/socket.io.js 。 你应该能够使用这个简单的页面来testing你的服务器:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="http://localhost:8081/socket.io/socket.io.js"></script> <script> var socket = io('http://localhost:8081/'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> </head> <body> </body> </html> 

你可以阅读更多关于为什么你不能在这个github问题上从websocket.org网站连接。