Я пытаюсь создать сервер Java WebSocket, ничего сложного, просто маленький, уродливый маленький сервер, чтобы попробовать веб-сокеты из браузера, используя стандартный определенный API.
Я читалспецификация протокола и все довольно просто.Я сделал рукопожатие, и, видимо, это работает.
Что я сделал с Java: открыл сокет, получил запрос от new Websocket("ws://...")
из JavaScript браузера, отправил ответ сервера, создав Sec-WebSocket-Accept.Все это, кажется, работает!Инструменты разработчика Google Chrome показывают мне, что соединение было успешным ... (вот изображение)
А также я сделал ws.onopen = function(ev){ alert("Opened!!");
, и это работает ...(поэтому соединение должно быть в порядке, верно?).
Но сейчас я пытаюсь отправить данные с сервера в браузер или браузер на сервер, но ничего не происходит ...
Чтобы отправить данные из браузера на сервер, я просто делаю ws.send("datos");
, а на сервере я пытаюсь прочитать это, делая readLine(in)
, будучи in = clientSocket.getInputStream();
... Но ничего ... не работает ...
И для отправки данных с сервера в браузер я делаю out.write(webSockFrame("data")getBytes())
, но опять же ... в браузере ничего не происходит ... в браузере я жду данных, делающих ws.onmessage = function(ev){....}
...
(Функция webSockFrame(string)
добавляет два байта, которые требует стандарт, один в начале и один в конце строки.)
И я также попытался подключиться к серверу с помощью telnet (чтобы убедиться, что сервер работает нормально), и он работал отлично, все, отправка и получение данных из telnet aс сервера ...
Что я делаю не так?
Я использую последнюю версию Chrome (14).
Я не хочусоздайте тяжелый сервер параллелизма, просто маленький, чтобы попробовать эту новую технологию.
ОБНОВЛЕНИЕ: я не знаю, что еще попробовать ... Я сделал netstat -a, чтобы увидеть, действительно ли соединение активноили это просто ошибка chrome, но, к моему удивлению, он существует и открывается, пока я не закрою веб-сервер ... Я не знаю, почему send и ws.onmessage не работают ...
ОБНОВЛЕНИЕII: Я внес изменение в текст события onopen, и текст изменился ... а также внес текст onclose, и когда я закрываю сервер, текст меняется ... так что соединение действительно существует, и onopen иonclose работает отлично ...