Websockets 在客户端发送多个事件和多个事件处理程序

Posted

技术标签:

【中文标题】Websockets 在客户端发送多个事件和多个事件处理程序【英文标题】:Websockets multiple events sent and multiple event handlers on client side 【发布时间】:2020-10-05 07:03:56 【问题描述】:

最近我开始使用 WebSockets 进行服务器-客户端通信。问题是当我想在连接中发送多种类型的数据时。有没有办法在单个连接中从服务器端向客户端发送多个消息事件并在客户端分别处理它们? 喜欢...

wss.on('connection', function connection(ws) 
  ws.send('message1',data1);
  ws.send('message2',data2);
  ws.send('message3',data3);

Data1,2,3 是不同类型的数据(data1 是 json,data2 是字符串),我想在客户端将它们用于不同的目的。

【问题讨论】:

【参考方案1】:

您可以创建每个消息都遵循的结构并将类型附加到此结构:

wss.send(JSON.stringify( type: 'firstName', value: 'John' ));
wss.send(JSON.stringify( type: 'lastName', value: 'Doe' ));

然后通过检查类型来处理消息:

wss.on('message', ev => 
  const data = JSON.parse(ev.data);
  switch (data.type) 
    case 'firstName':
      document.getElementById('first-name').textContent = data.value;
      break;

    case 'lastName':
      document.getElementById('last-name').textContent = data.value;
      break;

    default:
      // Unknown websocket message type
  
);

【讨论】:

好的,那么我如何在客户端分别获取这些消息事件? 我会试试的,谢谢,我会告诉你它是否有效! 更新:你是救生员,我不会想到这种方法。非常感谢!

以上是关于Websockets 在客户端发送多个事件和多个事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WebSockets 将多个文件发送到服务器?

Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应

关闭连接到 Mojo websocket 的 Mojo::IOLoop 重复事件

通过 websockets 以 JSON 格式发送事件

uWSGI:通过 websockets 与多个客户端一起工作

websockets - 检测具有相同 ID 的多个客户端并“踢”它们