Socket.io将不接受连接



第一次在socket.io上工作并尝试启动它,我可以提出请求,并且我已经启动了服务器,这是节点中的服务器。

const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
app.get("/",function (req,res){
res.send("Hello you socket loving bastard!");
});
io.on('connection', socket => {
console.log('user connection', socket);
io.emit('You got someone!', {user: "me"});
});
io.on('close', socket => {
console.log(socket);
});
http.listen(9090, () => {
console.log("Node starting on 9090 for websockets!")
});

使用vue原生websocket我有这个。。。

Vue.use(Socket, 'ws://localhost:9090/', {
reconnection: true,
reconnectionAttempts: 5,
reconnectionDelay: 1500
});

浏览器中的控制台显示:build.js?b408:1 WebSocket connection to 'ws://localhost:9090/' failed: Connection closed before receiving a handshake response

服务器在控制台中什么也不说,但是,它将提供get请求

嗯。。。问题是,我使用的是vue-native-websocketSocket.io不是本地的websocket处理程序,它添加了明显缺乏的额外标头信息。我切换到只在节点中使用ws,它工作得很好。

来自Socket.io文档。

Socket.IO不是WebSocket实现。虽然Socket.IO确实在可能的情况下使用WebSocket作为传输,但它会向每个数据包添加一些元数据:数据包类型、命名空间和需要消息确认时的数据包id这就是为什么WebSocket客户端将无法成功连接到Socket.IO服务器,Socket.IO客户端也将无法连接到WebSocket服务器

最新更新