Jetty - В чем разница между WebSocket.sendMessage (строковые данные) и void sendMessage (байтовый кадр, строковые данные)?

Я играю с веб-сокетами и Jetty 7.1.6.v20100715.

У меня есть несколько вопросов, в основном из-за отсутствия информации/объяснения этих методов.

1-й) Для чего нужен байт в sendMessage (фрейм байта, строковые данные).

2-й) Есть ли какая-либо причина, по которой outbound.sendMessage(string) не работает, если вызывается из метода WebSocket.onConnect()?

Кроме того, есть ли хорошее объяснение реализации Jetty и как ее следует использовать?

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

Спасибо


person DanC    schedule 17.09.2010    source источник


Ответы (1)


"Практически отсутствующая" документация Jetty... Я думаю, что лучший способ использовать WebSockets на раннем этапе - это прочитать спецификация и обратите внимание, что в настоящее время вы не можете отправлять через соединение WebSocket только строки Unicode.

Чтобы ответить на ваши вопросы:

  1. Этот байт является «типом кадра», который вы собираетесь отправить. В настоящее время определен только тип фрейма для строк Unicode, поэтому вы можете просто использовать метод sendMessage(String). По моему мнению, методы send*, кроме упомянутого, не должны быть общедоступными, чтобы избежать путаницы, но это верно для многих методов в Jetty API, и им, похоже, все равно. Кажется, что он готов к отправке двоичных данных, но, насколько мне известно, нет браузера, который поддерживает что-либо, кроме сообщений Unicode, поэтому на практике это бесполезно.

  2. Насколько мне известно, это должно быть нормально, но отсутствие документации на стороне Jetty делает это рискованным делом. Вот почему я решил отправить первое сообщение от клиента на сервер, чтобы запустить протокол, который отлично работает.

(Обратите внимание, что моим знаниям о WebSockt ~ 6 месяцев, и эта тема развивается очень быстро)

person Waldheinz    schedule 23.09.2010
comment
Спасибо за ответ. Что касается 2), да, мне пришлось сделать то же самое, чтобы он заработал: дождаться, пока клиент отправит первое сообщение на сервер. - person DanC; 23.09.2010