Путь поведения Websocket, необходимый для создания нового соединения при каждом изменении URL-адреса?
Я создал сервер Websocket на основе websocket-sharp, с двумя вариантами поведения, например:
- WS:// хост /behavior1
- WS:// хост /behavior2
Из JavaScript, когда я открываю соединение с сервером WebSocket, мне нужно указать URL-адрес поведения, которое будет принимать мое сообщение. Как я могу вызвать поведение2, когда я подключаюсь по URL-адресу поведения1, не создавая новое соединение с веб-сокетом? Это возможно?
На данный момент я рассматриваю возможность создания одного поведения, которое будет анализировать мое сообщение и перенаправлять на соответствующий обработчик сообщений.
Есть ли причина использовать несколько вариантов поведения помимо логического разделения? Есть ли основания использовать это логическое разделение, даже если оно заставляет создавать новое соединение?
1 ответ
Как я могу вызвать поведение2, когда я подключаюсь по URL-адресу поведения1, не создавая новое соединение с веб-сокетом?
Когда у вас есть два URL-адреса, вам придется установить два разных подключения к каждому из URL-адресов. Вы не можете повторно использовать одно и то же соединение для подключения к разным URL-адресам.
На данный момент я рассматриваю возможность создания одного поведения, которое будет анализировать мое сообщение и перенаправлять на соответствующий обработчик сообщений.
Это был бы лучший подход. Вы можете отправить, скажем, данные json в кадрах WebSocket, затем проанализировать эти данные, чтобы определить соответствующее поведение и обработать соответствующим образом. Например, вы можете иметь объект JSON следующим образом в каждом из ваших кадров:
{
"behavior":1,
"content": "your content to be processed"
}
Есть ли причина использовать несколько вариантов поведения помимо логического разделения? Есть ли основания использовать это логическое разделение, даже если оно заставляет создавать новое соединение?
Вы должны использовать разные URL только для определенных данных соединения, которые различны для каждого клиента. Например, идентификатор или имя. Если одному и тому же клиенту требуется разное поведение в разное время, вам нужно определить свое собственное соглашение для данных в фреймах WebSocket, как указано выше.