使用nodejs/socket.io和wscat时出现“socket hang up”错误

10
我有一个以下的Node.js WebSocket服务器。
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(8000);

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });


});

console.log("Listening on 8000");

当试图使用wscat进行连接时:

wscat -c ws://localhost:8000/

我收到以下错误信息:
error: Error: socket hang up

以下Javascript代码可在浏览器中正常运行:

var socket = io.connect('http://localhost:8000');
socket.on('news', function (data) {
  console.log(data);
  socket.emit('my other event', { my: 'data' });
});

非常感谢您的帮助!


3
你是否曾经解决过这个问题?我也遇到了同样的问题。 - jmls
1个回答

20

我建议您尝试在连接端点时指定传输协议。像这样:

wscat -c ws://localhost:3000/socket.io/\?transport=websocket

这对我的情况有效。


1
如果输出的最后一行是< 40,则可以使用以下命令发出带有"new message"消息的"event-name"事件: > 42["event-name","new message"] - Željko Šević

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接