gpt4 book ai didi

node.js - 将前端 native websocket 客户端连接到 Node.js Socket.io 服务器

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:43 24 4
gpt4 key购买 nike

我在我的 Express/Node.js 应用程序中使用 Socket.io 作为后端 websocket 服务器。服务器端代码如下所示:

const socketIo = io(server);
socketIo.on('connection', (client) => {
console.log('client connected');
client.emit('test', { test: '123' });
client.on('client-test', (data) => {
console.log('from client: ', data);
});
});

在前端(托管在同一个 Node.js 服务器上),我使用的是 native websockets,我有这个:

const socket = new WebSocket('ws://localhost:3001');

socket.onopen = () => {
socket.send('I am a client and I am listening');

socket.onmessage = (event) => {
console.log('Client received message: ', event);
};

socket.onclose = (event) => {
console.log('Client socket has closed: ', event);
}
};

websocket 连接似乎从未建立(我没有从服务器记录任何信息)。此外,我不确定如何在客户端接受服务器发出的消息(即“测试”消息),也不知道如何在服务器上接受来自客户端的消息(即服务器期待一些“客户端” -test'消息)。

我想知道前端的原生 websocket 是否与后端的 Socket.io 不兼容。在前端使用 Socket.io 时,我的设置也正常工作,但如果可能的话,我希望它在前端使用 native websockets。

最佳答案

Socket.io 不是原生的 websockets,它有一个自定义的传输层。要与 socket.io 通信,您需要 https://github.com/socketio/engine.io-client .

或者,您可以在后端使用 native websocket 库。喜欢:https://github.com/websockets/ws

关于node.js - 将前端 native websocket 客户端连接到 Node.js Socket.io 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com