我对 websockets 以及如何区分它发送的不同数据感到好奇。我在网上也找不到任何清晰的内容,除非我错过了一些眼前的东西。
我有一个 websocket,握手建立了连接。 ws 的目的是提供实时足球比分和实时表格。
因此,如果它是一个 REST API,我可能会有 2 个端点:/live-scores
和 /table
。我的 react 组件对不同的数据感兴趣,所以我想知道网络套接字中是否有等效的端点?或者说如何区分不同的数据?每条数据是否应该有一个单独的网络套接字?
此外,请记住,除了实时比分和表格之外,还会有超过 2 条数据,因此我认为为每条数据使用不同的 ws 会有点过分。
有人能给我指出正确的方向或在这里提供答案吗?
TLDR 您是否为每组不同的数据创建一个 Websocket(因为需要更好的方式来描述这一点),或者是否只有一个 Websocket,如果是,对客户端来说最好的方法是什么来区分它正在接收什么样的数据?
如果问题没有意义,请告诉我,我会尽力使其更清楚。
我的起始代码在这里:
import sockjs from 'sockjs';
const ws = sockjs.createServer({
sockjs_url: 'http://cdn.jsdelivr.net/sockjs/1.0.1/sockjs.min.js',
});
ws.on('connection', connection => {
connection.on('data', m => {
const message = m ? JSON.parse(m) : {};
if (message.type === 'register') {
connection.write(
JSON.stringify({
address: message.address,
body: {
message: 'Hello World!',
},
})
);
}
});
});
export default ws;
最佳答案
您不需要使用多个套接字来完成您想要的操作。实际上,您可能想要这样做的合理原因只有几个(请参阅 Multiple websocket connections )。
通过套接字发送 JSON 有效负载并使用该对象的属性来确定数据上下文的方法是完全可以接受的,但是您可能需要对 publish-subscribe 进行一些研究消息传递模式,看看它是否更适合您的需求。由于您使用的是 sockjs,因此您需要查看 sockjs-rooms启用此类功能。
关于javascript - Websocket 处理不同的数据 - 不同的端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54303732/