следует ли использовать одно подключение к веб-сокету для всех функций или создать новое подключение к веб-сокету для каждой интерактивной функции моего приложения?
У вас должно быть только одно подключение к веб-сокету, нетпричина использовать несколько веб-сокетов.
Из моего личного опыта :
Лучше всего было бы использовать REST API для обработки действий, поступающих от клиента, и использовать Websocket только для уведомлений,использование REST поможет вам в этом.
В любом случае, если вы хотите, чтобы все ваше приложение взаимодействовало по протоколу веб-сокета, вы можете отправить через сокет что-то вроде
msg = {
"action": "fly",
"data": "plane"
}
Затем обработайте его вна стороне вашего сервера, используя оператор переключения регистра:
switch(msg.action){
case 'fly':
serverCommand.fly(msg.data);
break;
// other statements
}
Или вы можете даже сделать (анализ не требуется):
serverCommand[msg.action](msg.data);
То, что я хочу сказать: вам не нужнооткрыть несколько веб-сокетов для решения проблем с производительностью.
При открытии нескольких веб-сокетов для одного и того же клиента ваш код вряд ли будет обслуживаться, и вы потеряете принцип DRY .
Примитепосмотрите на этот ответ , который не рекомендует открывать несколько сокетов.
И этот ответ , который перечисляет все случаи, когда вы можете открыть несколько веб-сокетов для одного и того же клиента(обратите внимание, это говорит, что регистр использования не является общим )