SocketCluster - невозможно подключиться к серверу из приложения Android - в соединении отказано

Я пытаюсь запустить демонстрационное приложение socketcluster-android-client (https://github.com/sacOO7/socketcluster-android-demo). У меня сервер успешно работает на localhost:8000. Я подключаюсь к: ws://localhost:8000/socketcluster/ со своего мобильного.

Когда я пытаюсь запустить приложение, соединение завершается с ошибкой:

Got connect error com.neovisionaries.ws.client.WebSocketException: Failed to connect to 'localhost:8000': failed to connect to localhost/127.0.0.1 (port 8000) from /127.0.0.1 (port 42405) after 5000ms: isConnected failed: ECONNREFUSED (Connection refused)

Я проверил следующее (из других ответов SO):

  • доступ к брандмауэру
  • успешный телнет к локальному хосту: 8000
  • ПК, на котором работает сервер, и мой мобильный телефон находятся в одной сети Wi-Fi.
  • обновить до последней версии узла

Вот код, который пытается подключиться к сокету:

socket = new Socket(url);
socket.setListener(new BasicListener() {

    public void onConnected(Socket socket, Map<String, List<String>> headers) {
        socket.createChannel("MyClassroom").subscribe(new Ack() {
            @Override
            public void call(String name, Object error, Object data) {
                if (error==null){
                    Log.i ("Success","subscribed to channel "+name);
                }
            }
        });
        Log.i("Success ","Connected to endpoint");
    }

    public void onDisconnected(Socket socket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) {
        Log.i("Success ","Disconnected from end-point");
    }

    public void onConnectError(Socket socket,WebSocketException exception) {
        Log.i("Success ","Got connect error "+ exception);
    }

    public void onSetAuthToken(String token, Socket socket) {
        socket.setAuthToken(token);
    }

    public void onAuthentication(Socket socket,Boolean status) {
        if (status) {
            Log.i("Success ","socket is authenticated");
        } else {
            Log.i("Success ","Authentication is required (optional)");
        }
    }

});

socket.setReconnection(new ReconnectStrategy().setMaxAttempts(10).setDelay(3000));

socket.connectAsync();

person Mahima MS    schedule 01.02.2019    source источник


Ответы (1)


Мне пришлось использовать IP-адрес ПК в URL-адресе. Заменил ws://localhost:8000/socketcluster/ на ws://<PC's IP address>:8000/socketcluster/.

person Mahima MS    schedule 04.02.2019