powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Почему не отправляется текст с клиента на сервер WebSocket?
17 сообщений из 17, страница 1 из 1
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020060
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, пишу сетевое приложение, которое обменивается данными с сервером через WebSocket.
Клиент работает на Android
Серверная часть крутится у меня на компе) ее писал тоже на Java.
Для клиента и сервера использовал одну библиотеку
Сервер реализовал вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
import java.net.InetSocketAddress;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

public class SimpleServer extends WebSocketServer {

    public SimpleServer(InetSocketAddress address) {
        super(address);
    }

    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
        System.out.println("new connection to " + conn.getRemoteSocketAddress());
        conn.send("Привет!");
    }

    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
        System.out.println("closed " + conn.getRemoteSocketAddress() + " with exit code " + code + " additional info: " + reason);
    }

    @Override
    public void onMessage(WebSocket conn, String message) {
        System.out.println("received message from " + conn.getRemoteSocketAddress() + ": " + message);
    }

    @Override
    public void onError(WebSocket conn, Exception ex) {
        System.err.println("an error occured on connection " + conn.getRemoteSocketAddress()  + ":" + ex);
    }

    public static void main(String[] args) {
        String host = "172.16.16.11";
        int port = 1122;

        WebSocketServer server = new SimpleServer(new InetSocketAddress(host, port));
        server.run();
    }
}


Вот как реализовал клиент:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
package ru.domen.myapplication;




import android.util.Log;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.java_websocket.drafts.Draft;


import java.net.URI;

class SoketWS extends WebSocketClient{

    public SoketWS(URI serverURI, Draft draft) {
        super(serverURI);
    }

    public SoketWS(URI serverURI) {
        super(serverURI);
    }


    @Override
    public void onOpen(ServerHandshake handshakedata) {
        Log.d("test","есть контакт");
    }

    @Override
    public void onMessage(String message) {
        Log.d("test","Server: "+ message);
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        Log.d("test","Close");
    }

    @Override
    public void onError(Exception ex) {

    }
}


Вот часть кода в MainActivity которая создает экземпляр клиента:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try{
            WebSocketClient client = new SoketWS(new URI("ws://172.16.16.11:1122"), new Draft_10());
            client.connect();
            client.send("Привет");
        }catch (URISyntaxException e){
            Log.d("test", "Не удалось подключиться к серверу");
        }
        catch (RuntimeException e){
            Log.d("test", "Исключение какое то с подключением");
        }


Для теста логика такая:
1 клиент подключается к серверу, на сервере выводится на экран то что клиент с таким то адресом подключился.
2 сервер посылает клиенту сообщение "Привет!"
3 клиент посылает серверу сообщение "привет!" но до сервера данное сообщение не доходит.
Вываливается исключение RuntimeException:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
07-31 10:43:13.008  19689-19689/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: ru.domen.myapplication, PID: 19689
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.domen.myapplication/ru.domen.myapplication.MainActivity}: org.java_websocket.exceptions.WebsocketNotConnectedException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:5292)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: org.java_websocket.exceptions.WebsocketNotConnectedException
            at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:566)
            at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:543)
            at org.java_websocket.client.WebSocketClient.send(WebSocketClient.java:171)
            at ru.domen.myapplication.MainActivity.onCreate(MainActivity.java:167)
            at android.app.Activity.performCreate(Activity.java:5264)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:5292)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
            at dalvik.system.NativeStart.main(Native Method)


Ошибка возникает вот в этой строке:
Код: java
1.
client.send("Привет");


В чем может быть проблема? Может я что то в манифесте не прописал?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020077
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,
а этот адрес и порт доступен?
172.16.16.11:1122
С другого компьютера (а лучше с андроида ,но не знаю,что установить)
telnet 172.16.16.11 1122
Что отвечает?
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020103
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

Адреса и порт доступен. Клиент получает сообщение от сервера, но если что то попытаться отправить на сервер, то вот возникает данное исключение.
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020139
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxто вот возникает данное исключение.
Подозреваю, что коннект происходит ассинхронно (в другом потоке) и потому стоит посмотреть какие интерфейсы экспортирует класс.
Вполне возможно там есть нечто вроде OnConnected, после которого и нужно отправлять данные.
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020146
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caused by: org.java_websocket.exceptions.WebsocketNotConnectedException
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020162
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему сменой библиотеки.
Ответ нашел вот тут: http://autobahn.ws/android/gettingstarted.html
Единственное но, если подключать полный список библиотек:
AutobahnAndroid

Jackson Core

Jackson Mapper
У меня вываливалась ошибка при сборке проекта, для реализации клиентской части для андроида, достаточно оставить AutobahnAndroid
в источнике также есть пример клиента.
При написании сервака оставил эту библиотеку
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020167
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, я тоже ей пользуюсь.

правда там есть у них есть пару косяков, пришлось подпиливать
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020237
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему используется именно WebSocket...?
Столько библиотек...зависимостей нарисовалось.

А простой классический socket чем не угодил.?
(Легче "ходят и сдают" вроде)
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020299
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alА почему используется именно WebSocket...?
Столько библиотек...зависимостей нарисовалось.

А простой классический socket чем не угодил.?
(Легче "ходят и сдают" вроде)
Нужно быстро реализовать проект один, важно чтобы клиент и сервер обменивались сообщениями в случайное время.

Джибсда, я тоже ей пользуюсь.

правда там есть у них есть пару косяков, пришлось подпиливать
А можно по подробнее пожалуйста?
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020390
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxА можно по подробнее пожалуйста?

при дисконекте не убивается writeSocket объект, и если часто будешь сам, делать disconnect()
а потом заново создавать подключение, например на другой сервак. то будет висеть столько, сколок раз пересоздавал подключения
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39020445
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,

Нужно быстро реализовать проект один, важно чтобы клиент и сервер обменивались сообщениями в случайное время.

М...и в чём противоречие с обычным socket?
Тоже самое но уровень пониже.
или в WebSocket ваша задача уже инкапсулирована "из коробки"?
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029004
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
если по ws/wss то сервер может быть один , а клиенты к нему могут быть и андроид и браузер.
я использую http://java-websocket.org/
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029008
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати там есть пример и сервака и клиента
но рекомендую использовать не ws, а wss , т.к. ws может не проходить через прокси.
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029010
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибсда, я тоже ей пользуюсь.

правда там есть у них есть пару косяков, пришлось подпиливать
уточни какой именно библиотекой, и какие косяки?
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029191
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяДжибсда, я тоже ей пользуюсь.

правда там есть у них есть пару косяков, пришлось подпиливать
уточни какой именно библиотекой, и какие косяки?
17959971
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029313
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Autobahn? java-websocket.org?
...
Рейтинг: 0 / 0
Почему не отправляется текст с клиента на сервер WebSocket?
    #39029369
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAutobahn

я пользуюсь это библиотекой
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Почему не отправляется текст с клиента на сервер WebSocket?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]