Websocket Java Server.Не отправлять и не получать сообщения - PullRequest
5 голосов
/ 03 октября 2011

Я пытаюсь создать сервер Java WebSocket, ничего сложного, просто маленький, уродливый маленький сервер, чтобы попробовать веб-сокеты из браузера, используя стандартный определенный API.

Я читалспецификация протокола и все довольно просто.Я сделал рукопожатие, и, видимо, это работает.

Что я сделал с Java: открыл сокет, получил запрос от new Websocket("ws://...") из JavaScript браузера, отправил ответ сервера, создав Sec-WebSocket-Accept.Все это, кажется, работает!Инструменты разработчика Google Chrome показывают мне, что соединение было успешным ... (вот изображение)

connection

А также я сделал 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 работает отлично ...

Ответы [ 2 ]

0 голосов
/ 03 июля 2012

См .: Странное поведение веб-сокета: отправлять данные только при закрытии вкладки

Я просто работал на сервере веб-сокетов в C. После успешной записи / отправки ответа заголовка рукопожатия я пытаюсь отправить некоторые данные на сервер через браузер или с сервера в браузер, но ничего не происходит! Я подумал, что, возможно, я что-то не так делаю и перечитал спецификации для веб-сокетов, но не смог решить проблему! Когда я увидел ваш пост, я решил проверить вашу заявку, и вы правы! Может быть, хром все еще размыт с веб-сокетами. Я попытаюсь реализовать новые сообщения в рамке и посмотреть, получит ли клиент (браузер) мои данные. Между тем, похоже, что браузер не будет сбрасывать данные, пока вы не закроете вкладку или окно ... Странно!

0 голосов
/ 04 октября 2011

Сначала вы можете прочитать ответ на Простой (Java, Javascript) запуск в Websockets .Ваш квест не новый.В той же теме есть пост чата Простота программирования WebSocket Server .Существует демо-версия со ссылкой для загрузки всего кода JavaScript (который работает на сервере).Если вы хотите следить за этим блогом (последняя ссылка), там должно быть полное руководство на стороне javascript, возможно, на этой неделе.Я получил хорошее начало сегодня.Кроме того, регулярно выбирайте «О Google Chrome» из гаечного ключа, чтобы обновить браузер Chromium.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...