我应该使用一个 websocket 连接来实现所有功能还是应该
为我的每个交互功能创建新的 websocket 连接
应用程序?
您应该只有一个 Websocket 连接,没有理由使用多个 Websocket。
从我个人的经历来看:
最好的设计是使用 REST API 来处理来自客户端的操作,并仅使用 Websocket 进行通知。使用 REST 将为您管理解析。
无论如何,如果您希望所有应用程序通过 websocket 协议进行通信,您可以通过套接字发送类似的内容
msg = {
"action": "fly",
"data": "plane"
}
然后使用 switch case 语句在服务器端处理它:
switch(msg.action){
case 'fly':
serverCommand.fly(msg.data);
break;
// other statements
}
或者你甚至可以这样做(不需要解析):
serverCommand[msg.action](msg.data);
我想说的是:不需要打开多个websocket来解决性能问题。
通过为同一个客户端打开多个 websocket,您的代码将很难维护,并且您将丢失DRY https://en.wikipedia.org/wiki/Don%27t_repeat_yourself原则。
看看那个answer https://stackoverflow.com/a/32493799/1811956,不建议打开多个套接字。
和这个answer https://stackoverflow.com/a/9269458/1811956其中枚举了您可能想要为同一客户端打开多个 Websocket 的所有情况(注意,它说用例是不是公地)