Web Socket & Netty — Тип полученного сообщения в messageReceived

Я пробую Netty WebSocketServer(Netty WebSocketServer). Я хочу отправлять сообщения на этот сервер из собственного клиента веб-сокета (от: http://www.tutorialspoint.com/html5/html5_websocket.htm) со следующим кодом:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function WebSocketTest()
{
  if ("WebSocket" in window)
  {
     alert("WebSocket is supported by your Browser!");
     // Let us open a web socket
     var ws = new WebSocket("ws://localhost:3210/websocket");
     ws.onopen = function()
     {
        // Web Socket is connected, send data using send()
        ws.send("Message to send");
        alert("Message is sent...");
     };
     ws.onmessage = function (evt) 
     { 
        var received_msg = evt.data;
        alert("Message is received...");
     };
     ws.onclose = function()
     { 
        // websocket is closed.
        alert("Connection is closed..."); 
     };
  }
  else
  {
     // The browser doesn't support WebSocket
     alert("WebSocket NOT supported by your Browser!");
  }
}
</script>
</head>
<body>
<div id="sse">
   <a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>

Однако в методе messageReceived обработчика он видит входящее сообщение в типе BigEndianHeapChannelBuffer.

Что мне нужно изменить в коде сервера?


person small_ticket    schedule 08.01.2012    source источник


Ответы (2)


Какой браузер вы используете?

Код в Netty 3.2 поддерживает HyBi-00. Большинство браузеров ушли от этой версии. См. публикацию.

Netty 3.3 (ветка 3.2 исходного кода) и 4.0 (ветка master исходного кода) содержит поддержку последних стандартов веб-сокетов (RFC 6455).

Я рекомендую использовать ветку netty 3.2.

Надеюсь это поможет.

person Veebs    schedule 08.01.2012
comment
Спасибо за ваш ответ, я загрузил исходный код и пытаюсь собрать его с помощью maven, но он запрашивает парольную фразу GPG. Я не смог найти никакой информации об этом. ты знаешь кодовую фразу? или что мне делать? - person small_ticket; 09.01.2012
comment
Я думаю, вы можете случайно попытаться развернуть его. Попробуйте mvn jar или mvn package. - person Veebs; 09.01.2012
comment
да, это работает с пакетом mvn. однако я все еще получаю BigEndianHeapChannelBuffer. Кстати, я использую хром 14.0.835.202 (Developer Build 103287 Linux) и скачал github.com/netty/netty/tree/3.2 - person small_ticket; 09.01.2012
comment
Вам нужно использовать пакет WebSocketX. Попробуйте запустить пример github.com/netty/netty/tree/3.2/src/main/java/org/jboss/netty/ в вашем браузере. - person Veebs; 09.01.2012

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

person Gary    schedule 08.01.2012