代码之家  ›  专栏  ›  技术社区  ›  peter flanagan

Websocket处理不同的数据-不同的端点?

  •  0
  • peter flanagan  · 技术社区  · 6 年前

    我很好奇websockets以及如何区分它发送的不同数据。我在网上也找不到任何清晰的东西,除非我错过了什么。

    我有一个websocket,握手建立了连接。ws的目的是提供实况足球比分和一个实况表。

    /live-scores /table . 我的react组件对不同的数据感兴趣,所以我想知道在websockets中是否有等效的端点?或者如何区分不同的数据?是否应该为每个数据段提供单独的web套接字?

    另外,请记住,除了实时分数和表之外,还有很多超过2条的数据,所以我认为为每个人使用不同的ws会有点过分。

    有谁能为我指出正确的方向或在这里提供答案吗?

    如果这个问题没有意义,让我知道,我会尽力让它更清楚。

    我的起始代码是:

    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;
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Besworks Lucas Zarpelon    6 年前

    你不应该使用多个套接字来做你想做的事情。实际上,只有几个合理的理由可以让你这么做(参见 Multiple websocket connections ).

    您通过套接字发送JSON有效负载并使用该对象的属性来确定数据上下文的方法是完全可以接受的,但是您可能需要对 publish-subscribe 消息传递模式,以查看它是否更适合您的需要。既然你使用的是sockjs,你应该看看 sockjs-rooms 以启用此类功能。