Почему хорошая идея, что реализация WebSocket была разделена на подынтерфейсы? - PullRequest
2 голосов
/ 13 марта 2012

В новых версиях Jetty реализация WebSocket была разделена на несколько подинтерфейсов:

http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/websocket/WebSocket.html

Почему это было хорошей идеей?
И каковы хорошие варианты использования для этого разделения?

1 Ответ

5 голосов
/ 14 марта 2012

Хорошо, теперь, когда я прочитал больше об этой проблеме и что-то реализовал, я попытаюсь ответить на нее сам.

Стандартный интерфейс WebSocket имеет только методы

onOpen(Connection con)

и

onClose(int closeCode, String message)

. При подключении, которое вы получаете при открытии WebSocket, вы можете отправлять сообщения в браузер.(двоичный или текстовый).

Таким образом, стандартный WebSocket Interface в основном предназначен только для открытия соединения и отправки сообщений в браузер .

Вам не нужно иметь дело с другими функциями, например, когда сообщения приходят из браузера.

Если вы хотите дополнительные функции , есть другие подинтерфейсы изWebSocket: Websocket.OnFrame, OnBinaryMessage, OnTextMessage, OnControl

Так что теперь, если вы хотите, чтобы ваш WebSocket обрабатывал текстовые и двоичные сообщения, вы должны реализовать его следующим образом:

class MyWebSocket implements  WebSocket.OnTextMessage, WebSocket.OnBinaryMessage{
    // Implementation
}

Вывсегда нужно реализовывать интерфейсы, которые вам нужны для вашей задачи, а не все другие функции, если они не имеют к вам отношения.Это упрощает код и уменьшает длину кода.

...