使用多个WebSocket连接

时间:2018-08-25 14:03:35

标签: performance http websocket

我有一个网站,每个月都有数千次访问,而且这个网站还在不断增长。 我正在向网站添加交互式的新功能。

现在我正在处理问题,我应该为所有功能使用一个websocket连接还是为我的应用程序的每个交互功能创建新的websocket连接?

我正在考虑性能问题。创建websocket意味着我必须将连接保存在服务器上。但是,一个用户的多个连接=如果我为每种功能创建新的连接,则我必须保存的连接量要大得多。

如何处理此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

我应该将一个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原则。

看看那个answer,它不建议打开多个插座。

这个answer使得您可能想为同一个客户打开多个websocket的情况更加复杂(请注意,它说用例是非公有