我很好奇websocket以及如何区分它发送的不同数据。我也无法在网上找到任何明确的信息,除非我丢失了盯着我的东西。
我有一个websocket,握手建立了连接。 ws的目的是提供实况足球比分和实况表。
因此,如果它是一个REST API,则可能会有两个端点/live-scores
和/table
。我的react组件对不同的数据感兴趣,所以我想知道Web套接字中是否有等效的端点?或者您如何区分不同的数据?每个数据都应该有一个单独的Web套接字吗?
此外,请记住,除了现场比分和比赛表之外,还有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;
答案 0 :(得分:1)
您不需要使用多个套接字来执行所需的操作。实际上,出于某些合理原因,您可能想要这样做(请参阅Multiple websocket connections)。
通过套接字发送JSON负载并使用该对象的属性来确定数据上下文的方法是完全可以接受的,但是您可能需要对publish-subscribe消息传递模式进行一些研究,以查看是否它会更好地满足您的需求。由于您使用的是sockjs,因此您需要查看sockjs-rooms来启用这种功能。