WebSockets, GlassFish, Grizzly - не удается подключиться - PullRequest
1 голос
/ 30 сентября 2011

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

Однако, похоже, сокет, который я пытаюсь создать, никогда не получаетсвязано.Почему это может быть?

Ниже приведен код моего класса WebSockets.Когда вызывается .onConnect(), регистрируется:

Я - сокет, я был подключен.Я подключен?- false

Обновление: в JavaScript, где я создаю соответствующий сокет, readyState равен 1, что означает «сокет открыт, связь возможна».

import a.b.Misc; //writes logs.

import com.sun.grizzly.websockets.BaseServerWebSocket;
import com.sun.grizzly.websockets.DataFrame;
import com.sun.grizzly.websockets.WebSocketListener;

public class ChatWebSocket_v2 extends BaseServerWebSocket {
    private String user;
    public ChatWebSocket_v2(WebSocketListener... listeners) {
        super(listeners);
    }
    public String getUser() {
        if (user == null) {
            Misc.print("User is null in ChatWebSocket");
            throw new NullPointerException("+=The user is null in chat web socket");
        }
        return user;
    }
    public void setUser(String user) {
        Misc.print("Just set user: " + user);
        this.user = user;
    }
    @Override
    public void onMessage(String message) {
        Misc.print(message +"\n");
    }
    @Override
    public void onMessage(byte[] message) {
        Misc.print(new String(message) +" << Bytes\n");
    }
    @Override 
    public void onConnect() {
        Misc.print("I am socket, i was connected. Am i connected? - " + this.isConnected());
    }
    @Override 
    public void onClose(DataFrame df) {
        Misc.print("I am socket, i was closed");
    }
}

1 Ответ

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

Если вы просто пытаетесь установить соединение где-то, вы можете попробовать это вместо этого.Существует демо-версия , и вы можете скачать код javascript и поиграть с ним самостоятельно.Обратите внимание, что код javascript работает только в том случае, если он установлен на сервере (из-за безопасности браузера, потому что он «причудливый»). В работах также есть пошаговое руководство по работе с клиентом, которое я опубликую, как только оно будет опубликовано.готовы.Большинство прокси-серверов не были обновлены для обработки веб-сокетов, поэтому они испортят запрос на подключение, и большинство людей не смогут подключаться к серверам веб-сокетов с работы.Firefox 7 (выпуск) или Google Chrome 14 или более поздней версии поддерживают последнюю версию протокола websocket, который работает на демо-сервере.

Если вы хотите попробовать запустить демоверсию гризли, вам может потребоваться отладка.и, возможно, я помогу с этим.Обратите внимание, что в комментариях ниже к статье другие люди сказали, что они также не могут заставить ее работать, и я не нашел никаких последующих действий.На данный момент оно кажется не лучше, чем приложение echo, описанное выше, даже если мы его запустим, и, возможно, оно слишком сложное и недостаточно документировано, если вы просто пытаетесь начать.Но если вы хотите попытаться запустить его, вы должны 'git' последнюю версию кода here , которая была хотя бы зафиксирована недавно и может быть исправлена.

Затем убедитесь, чтоэтот app.url в файле javascript приложения установлен в ваш установочный каталог.Его жестко закодировано как:

url: 'ws://localhost:8080/grizzly-websockets-chat/chat',

Если вы используете Firefox 7, необходимо изменить javascript для использования префикса Moz, например:

  if (typeof MozWebSocket != "undefined") { // window.MozWebSocket or "MozWebSocket" in window
    ok
  } else if (window.WebSocket) {  // he uses  if ("WebSocket" in window)
    ok
  } else {
    do your print "browser doesn't support websockets"
  }
  .... then if the browser supports websockets
  websocket = new WebSocket(app.url); or
  websocket = new MozWebSocket(app.url); 
  // depending on which it is.

The Демонстрационный код сервера веб-сокетов HLL все это рассортировано.

(другое) ОБНОВЛЕНИЕ: Когда я сам прохожу гризли, я обнаружил на панели быстрого запуска в администраторе glassfishконсоль, есть привет пример, который довольно легко установить и запустить.Вы найдете инструкции там.Каталог примеров также содержит файл war с именем: websocket-mozilla;поэтому я предполагаю, что он должен использовать веб-сокеты.Кто-то, кто знаком с JSP, должен просмотреть исходный код.Все, что я могу видеть, это то, что он использует сеанс http.Нет упоминания о веб-сокете вообще.Это очень похоже на образец приветствия.

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