powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Раздушить по количеству WebSocket подключений
25 сообщений из 58, страница 2 из 3
Раздушить по количеству WebSocket подключений
    #39938873
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя , просто пример из туториала .
Figure - что-то типа обертки над json, а в @ServerEndpoint указываем классы encoders = {FigureEncoder.class}, decoders = {FigureDecoder.class}
Figure:
Код: 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.
package com.test.whiteboardapp;

import java.io.StringWriter;
import javax.json.Json;
import javax.json.JsonObject;

public class Figure {
    private JsonObject json;

    public Figure(JsonObject json) {
        this.json = json;
    }

    public JsonObject getJson() {
        return json;
    }

    public void setJson(JsonObject json) {
        this.json = json;
    }

    @Override
    public String toString() {
        StringWriter writer = new StringWriter();
        Json.createWriter(writer).write(json);
        return writer.toString();
    }
}


FigureEncoder:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
package com.test.whiteboardapp;

import javax.websocket.EncodeException;
import javax.websocket.Encoder;
import javax.websocket.EndpointConfig;

public class FigureEncoder implements Encoder.Text<Figure>{
    @Override
    public String encode(Figure figure) throws EncodeException {
        return figure.getJson().toString();
    }

    @Override
    public void init(EndpointConfig ec) {
        System.out.println("init");
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}


FigureDecoder:
Код: 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.
package com.test.whiteboardapp;

import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonException;
import javax.json.JsonObject;
import javax.websocket.DecodeException;
import javax.websocket.Decoder;
import javax.websocket.EndpointConfig;

public class FigureDecoder implements Decoder.Text<Figure> {
    @Override
    public Figure decode(String string) throws DecodeException {
        JsonObject jsonObject = Json.createReader(new StringReader(string)).readObject();
        return  new Figure(jsonObject);
    }

    @Override
    public boolean willDecode(String string) {
        try {
            Json.createReader(new StringReader(string)).readObject();
            return true;
        } catch (JsonException ex) {
            ex.printStackTrace();
            return false;
        }
    
    }

    @Override
    public void init(EndpointConfig ec) {
        System.out.println("init");
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938877
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэто что за боязнь?
Скорее, желание сделать оптимальнее.
Приложение само шуршит с данными и от того, что юзеры будут постоянно дергать его, залезая в БД, быстрее оно не выполнит.
Все-таки буферизация где она уместна - это вполне нормально по-моему.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938879
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
счас у тебя получается Что сообщение от каждого рассылается каждому
а кроме как простой рассылки?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938881
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
Скорее, желание сделать оптимальнее.
Приложение само шуршит с данными и от того, что юзеры будут постоянно дергать его, залезая в БД, быстрее оно не выполнит.
Все-таки буферизация где она уместна - это вполне нормально по-моему.
ну если только по конкретному случаю
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938948
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вадя
счас у тебя получается Что сообщение от каждого рассылается каждому
а кроме как простой рассылки?

Не понимаю вопрос.
Как и куда копать в поиске ответа на топик.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938963
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
если число подключений ограничено, какая стратегия работы с websocket?
для какой задачи?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938964
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
Не понимаю вопрос.
в твоём примере 22101646 показана только рассылка входного сообщения от одного клиента всем остальным.
а как у тебя организованы другие действия? выполнить обработку полученного сообщения ? и прочее.
JDS
Как и куда копать в поиске ответа на топик.
а что значит "Раздушить по количеству ..."
ты хочешь от одного клиента иметь кучу коннектов?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938976
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв твоём примере показана только рассылка входного сообщения от одного клиента всем остальным.
а как у тебя организованы другие действия? выполнить обработку полученного сообщения? и прочее.
Есть конечно и запросы с персональными ответами и для них меня вполне устроил бы http, но вопрос возникает при массовом обновлении данных на клиентах: зачем постоянно долбить сервер кучей запросов, проверяя не появились ли новые данные.
вадяа что значит "Раздушить по количеству ...", ты хочешь от одного клиента иметь кучу коннектов?
Нет. Коннекты один к одному.
Basil A. SidorovСокет это две пары: src-ip:src-port и dst-ip:dst-port.
Для HTTP и многих других протоколов пара dst-ip:dst-port фиксирована.
Дальше включаем банальную логику и получаем тривиальный вывод: даже когда провайдер спрятал за NAT на одном (единственном) IP-адресе ~16К клиентов, "немного" это "более чем достаточно". Почему 16К? Потому, что есть рекомендации по распределению портов по диапазонам.
В любом случае вам, как владельцу сервиса, должно быть покласть на проблемы клиентов за конкретным провайдером. В данном конкретном случае - совершенно объективно.
Возможно, я не понимаю, что мне пытались сказать уже несколько раз
Я видимо неверно понял, что на сервере в целом ограниченное число портов с потолком 65К?
Правильно ли, что сервер без всяких плясок может принять условно 16К подключений с одного IP, 16К с другого, с третьего и так далее?
Если да, тогда вопрос действительно в ресурсах.
Но и горизонтальное масштабирование все равно актуально, т.к. не можем бесконечно увеличивать память.
И тогда если говорить про горизонтальное масштабирование, то приложение видимо, должно быть построено для работы в кластере.
То есть нужен балансировщик (какой и как он работает в контексте WS пока не представляю, то есть как он будет/должен раскладывать запросы/ответы по сети между узлами). Возникает вопрос и с синхронизацией узлов или должна быть некая центральная нода где лежат общие данные (тот же общий буфер например), то есть узлы главным образом для поддержки бОльшего количества подключений, с вычислениями легко справится и одна машина.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938981
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
Есть конечно и запросы с персональными ответами и для них меня вполне устроил бы http, но вопрос возникает при массовом обновлении данных на клиентах: зачем постоянно долбить сервер кучей запросов, проверяя не появились ли новые данные.
и опять - для чего тебе ws?
JDS
Раздушить
это что означает?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938982
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
зачем постоянно долбить сервер кучей запросов, проверяя не появились ли новые данные.
у тебя скоро рекорд.
Будет три страницы, но непонятно, что за куча запросов и зачем клиенту долбить 5 раз в сек сервер?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39938999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне тоже до сих пор непонятна ни архитектура ни нагрузка.
Что вообще обсуждается? Какой сценарий?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939002
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи опять - для чего тебе ws?
Чтобы обновлять данные странице клиента не по запросу пользователя и не периодическими http-запросами в фоне.
вадяРаздушить это что означает?
Потому что почти на всех уровнях упираешься в ограничения (у браузера, возможно, на веб-сервере, операционка, сам протокол, количество памяти). А например, условный ориентир держать 1-2млн коннектов.
PetroNotC Sharpнепонятно, что за куча запросов и зачем клиенту долбить 5 раз в сек сервер?
В том и дело, что не охота долбить )
Может есть какая-то другая технология кроме WS отправки данных на клиент по мере готовности на сервере?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939005
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS

Может есть какая-то другая технология кроме WS отправки данных на клиент по мере готовности на сервере?


Если именно с сервера на клиент - https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939006
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
В том и дело, что не охота долбить )
Может есть какая-то другая технология кроме WS отправки данных на клиент по мере готовности на сервере?
есть.
Только когда юз кейс использования дождемся?
Тупишь?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939007
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Захотелось программисту, написал кучу кода.
А сам ни бе ни ме ни кукареку. Внятно объяснить зачем написал, не может.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939011
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется - это как диалог двух блондинок. Он ведётся на тонком уровне.
Не только на словах. А на уровне жестов. Мимики и недвусмысленных намёков.

Вобщем я сейчас себя ощутил тупым сексистским мужланом который не может
понять диалог жены и подруги по телефону.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939018
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
Правильно ли, что сервер без всяких плясок может принять условно 16К подключений с одного IP, 16К с другого, с третьего и так далее?
Опять мимо. Сервер может принять столько подключений, насколько у сервера хватит ресурсов. Как эти подключения распределяются по IP-адресам и прочему - вас не колышет и колыхать не должно.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939026
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
JDS

Может есть какая-то другая технология кроме WS отправки данных на клиент по мере готовности на сервере?


Если именно с сервера на клиент - https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events

Посмотрел https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events .
Ну это php и там так же используется коннект, то есть возможно семантика не веб-сокеты, но внутри так понимаю, все равно сокеты? )

PetroNotC SharpТолько когда юз кейс использования дождемся?
Аналогично. В который раз озвучиваю )
Есть допустим 100тыс. клиентов.
Им надо обновлять данные на странице.
Если каждый из них будет слать раз в секунду http-запрос, считаю это не очень нормальным.
Поэтому смотрю в сторону WS, но там упираемся в лимиты по количеству коннектов.
Какие точно и на каких уровнях, не знаю. Изначально столкнулся вот с ограничениями в браузере, но это пока ладно.
Что не понятного в том, что изложил? )
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939030
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS

Если каждый из них будет слать раз в секунду http-запрос, считаю это не очень нормальным.

Я тоже считаю это не очень нормальным.

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

Каким образом твои рассуждения довели тебя до WS - непонятно. Ограничения в браузере - забей.
Никто в браузере так не работает как ты изобразил. Бери среднего пользователя а не маргинала
и не тестовый стенд по нагрузке.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939032
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
Что не понятного в том, что изложил? )

1. Какого рода у них программа на экране?
2. 100000 клиентов придумал? Что было до этого?
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939038
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОграничения в браузере - забей. Никто в браузере так не работает как ты изобразил. Бери среднего пользователя а не маргинала и не тестовый стенд по нагрузке.
Это понятно, что никто так не работает и на браузер забил. Но что возможными с лимитами на других уровнях у меня представления нет.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939040
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
1. Какого рода у них программа на экране?
2. 100000 клиентов придумал? Что было до этого?

Эммм ) 1. Браузер. 2. Гипотетически.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939041
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
PetroNotC Sharp
пропущено...

1. Какого рода у них программа на экране?
2. 100000 клиентов придумал? Что было до этого?

Эммм ) 1. Браузер. 2. Гипотетически.
все ясно.
Вопросы архитектуры не решаются гипотетически.
Так как:
"Один дурак может задать столько вопросов что и 100 мудрецов не ответят" [(с) В.И. Ленин ПСС том 8 стр.15, работа "Как нам преобразовать РабКрин"]
Удачи!
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939042
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Аксиома:
В форуме легче помогают, если у ТС реальная проблема.
...
Рейтинг: 0 / 0
Раздушить по количеству WebSocket подключений
    #39939043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS
maytonОграничения в браузере - забей. Никто в браузере так не работает как ты изобразил. Бери среднего пользователя а не маргинала и не тестовый стенд по нагрузке.

Это понятно, что никто так не работает и на браузер забил. Но что возможными с лимитами на других уровнях у меня представления нет.
Смотри. Мы здесь можем еще 100 страниц флуда написать. Но ты должен нас нагнуть (!) реальным примером.
С исходниками клиента и сервера. И с моделированием нагрузки.

Архитектуры разрабатываются итеративно. Тоесть по принципу многоходовочки. Сделал. Проверил на перформанс.
Увидел. Проанализировал. Пофиксил. И снова по кругу. И ни один "диванный эксперт и оналитик" тебе здесь за
одну итерацию никакого решения не выдаст. Решение - это даже не 1-2 варианта. Это - дерево развития. Где
в каждом узле - 100500 направлений куда двигаться.

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


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