рукопожатие websocket: разработчику нужно что-нибудь для этого сделать?

#websocket #handshake

#websocket #рукопожатие

Вопрос:

Я успешно завершил свой тест websocket, но я хочу знать о рукопожатии Websocket. В моем веб-клиенте я использовал приведенный ниже код для запуска связи с websocket

 var ws = new WebSocket("ws://example.com/foobar");
ws.onmessage = function(evt) { /* some code */ }
ws.send("Hello World")
  

На моем веб-сервере (используется Java) Я использовал Jetty lib и реализовал сервер, как показано ниже:

 public class MyWebSocket implements WebSocket.OnTextMessage {
    public void onOpen(Connection connection)
    {
    }

    public void onMessage(byte frame, byte[] data,int offset, int length)
    {
    }

    public void onMessage(String data)
    {
    }

    public void onClose(int code, String message)
    {

    }
}
  

Связь с веб-сокетом работает нормально для меня, я ничего не сделал для рукопожатия. Как это работает?

Ответ №1:

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

Если вы хотите реализовать рукопожатие самостоятельно, возможно, вам захочется повозиться без библиотеки и поиграть с тем, как это реализовать «едва».

Для Jetty вы можете просмотреть код рукопожатия здесь, а анализ ключей выполняется здесь.