多用途的Websocket连接

时间:2017-06-21 17:41:26

标签: node.js networking websocket

我刚刚开始学习websockets,所以如果我说的话没有意义,那可能就是原因。我理解它们如何工作的基础知识。客户端可以向服务器发送消息,反之亦然。我的问题是,如果您希望客户端能够为不同目的使用相同的连接。例如,如果客户端可以在游戏中发送消息或移动他们的角色,该怎么办?你需要单独的套接字来处理这些情况吗?我想你可以为你的消息创建一个标准,然后在服务器上有一个switch语句,但这看起来不够优雅。如果重要的话我正在使用Node的“express-ws”软件包。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你的直觉是正确的。您通常会构造一个标准消息格式,该格式具有指示消息类型的属性。

您不必在服务器上使用switch语句。如果需要,您可以创建一个eventEmitter,并将.emit()每条传入的消息发送到与消息类型相同的eventName。然后,您的服务器代码将只为其想要侦听的任何消息注册侦听器,并且您将避免使用switch语句。这也可以使您的服务器代码在模块中更加划分。您只需要共享eventEmitter,即任何希望收听传入消息或发送传出消息的模块。

仅供参考,socket.io是一个客户端和服务器层,位于webSocket之上,为您完成所有这些(以及许多其他功能)。这里有socket.io的部分功能列表:Moving from socket.io to raw websockets?