我有一个网站,每个月都有数千次访问,而且这个网站还在不断增长。 我正在向网站添加交互式的新功能。
现在我正在处理问题,我应该为所有功能使用一个websocket连接还是为我的应用程序的每个交互功能创建新的websocket连接?
我正在考虑性能问题。创建websocket意味着我必须将连接保存在服务器上。但是,一个用户的多个连接=如果我为每种功能创建新的连接,则我必须保存的连接量要大得多。
如何处理此问题的正确方法是什么?
答案 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的情况更加复杂(请注意,它说用例是非公有)