Вопросы с тегами [websocket]

1

голосов
2

ответ
65

Просмотры

Golang тайм-аут или вернуться рано

Я пытаюсь создать сервер в режиме реального времени многопользовательской игры в Golang используя WebSockets в качестве учебного проекта, и я трудно понять, как именно я должен реализовать эту концепцию: Все пользователей в игровой комнате предоставляется срок , MAX_TIMEOUT ответить на приглашение при условии. Ответы передаются через WebSocket соединения. Если все пользователи отвечают перед тем MAX_TIMEOUT, то действие А должно произойти, используя ответы. Если MAX_TIMEOUT протекающего перед всеми подсказками представлены, то действие B должно произойти, используя ответы доступны. Исходя из Node.js, я мог видеть себя выполнение этих обещаний, но в Golang, я скорее потерял. Любой совет?
Quontas
1

голосов
1

ответ
42

Просмотры

Не удалось запустить hivemq сервер на удаленном сервере?

Я сделал два сервера один фиктивный тестовый сервер и другой, где мой Джанго проект работает. Я могу запустить hivemq сервера на моем фиктивном сервере, но он бросает ошибку, когда я пытаюсь запустить его на моем сервере проекта. java.lang.ExceptionInInitializerError: нуль на org.jgroups.logging.LogFactory.getLog (Unknown Source) в org.jgroups.blocks.MessageDispatcher (Unknown Source) на BAA (Unknown Source) в com.hivemq.HiveMQEnterpriseServer.b (не известно. Источник) на com.hivemq.HiveMQEnterpriseServer.a (Unknown Source) в com.hivemq.HiveMQEnterpriseServer.main (Unknown Source) причиненном: java.lang.NullPointerException:. нуль на java.base / java.util.Locale (Locale. Java:.. 713) в java.base / java.util.Locale (Locale.java:742) в org.jgroups.logging.Slf4jLogImpl (Unknown Source) ... 6 общие рамки опущены
MrSoloDolo
1

голосов
1

ответ
58

Просмотры

Торцевые Исключения из-за плотности в Nodejs с WebSocket

У меня есть сервер узла, который расслоение плотной подключен к 10k-14k клиента с WebSocket. Когда счетчик клиента до выше примерно ~ 14k, новые клиенты начинают получать исключение, что: «System.Net.Sockets.SocketException: Соединение не может быть сделано, потому что целевая машина активно отказалась от него» Насколько я знаю, это исключение не возникает о плотности сети. Поскольку соединение (число портов) предел 65K. Если есть свободный порт, я думаю, что другое исключение должно происходить о плотности. Например, если сервер не может обработать 1ки соединения, я думаю, что это исключение не должно произойти. У тебя есть другие идеи?
Qwer Sense
1

голосов
1

ответ
174

Просмотры

Etherscan.io WebSocket отправки старых транзакций

надеетесь получить самые последние сделки с адреса, используя Etherscan WebSocket API. По какой-то причине WebSocket посылает мне транзакции, которые 2-3 часов назад. Например: // Подписавшись на binance адрес (в качестве своего адреса с большим количеством сделок): socketData.ether.send (JSON.stringify ({ "событие": "txlist", "адрес": "0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE"})) возвращает старые транзакции. Я ищу новые сделки, которые подтверждены. Любая помощь будет оценена.
NCal
1

голосов
0

ответ
308

Просмотры

Надежный веб Оправа Streaming Кафки в Java

Мне нужно записать из ненадежного подключения веб-сокетов и потока в Кафка. Наш Кафка кластер является довольно надежным и мы можем сделать его высокую доступность. Каков наилучший подход, чтобы сделать подключение к веб-сокетов в качестве надежной, насколько это возможно? Я хотел бы, чтобы свести к минимуму потери данных. Одним из решений будут иметь несколько процессов или веб-сокеты клиентов прослушивания и потоковые к нескольким темам Кафок. Затем сделать фильтр с Кафкой потоков. Это работает только тогда, когда каждое сообщение, которое я получаю имеет уникальный идентификатор, который не всегда. Другим решением было бы контролировать подключение веб-сокетов и перезапустить или сбросить его. Но тогда я, возможно, потерю данных. Или полагаться на веб-сокетов сердцебиения? Или коды своих собственных обработчиков ошибок? Какие каркасы / библиотеки из Java в этом пространстве, чтобы сделать лучшую работу? В настоящее время я использую клиент веб-сокеты от org.java-WebSocket.
Daniel
1

голосов
1

ответ
33

Просмотры

Правильный подход к WebSockets

Я строй приложения, и хотел бы знать, что правильный подход был бы для использования WebSockets, чтобы доставить в приложении живых уведомлений. Мое приложение использует Express, сокет IO & MongoDB. Я использую Passport JS для аутентификации пользователей и то, что называется passportSocketIo подключить паспорт и сокет IO вместе. Функциональность Я хотел бы иметь это разделяемые уведомления. В основном, когда несколько пользователей частью группы и один из пользователей обновляет что-то делать с группой, я хочу, чтобы все пользователи, принадлежащие к этой группе, чтобы получить уведомление через веб-сокетов. Мой основной вопрос должен все эти пользователи используют один и тот же WebSocket для того, чтобы все получить такое же уведомление? IE, если кто-то подключается к группе, то я поставил группу WebSocket идентификатор их WebSocket идентификатора, то любые следующие люди, которые соединяют бы предположить, что идентификатор тоже для того, чтобы иметь все на тот же сокет, или я должен хранить пользователи WebSocket идентификатора на каждый раз, когда они открыть соединение WebSocket с моим приложением и хранить его в Монго DB сказать по модели группы, возможно, например, так: activeSocketIds: [ «id1», «ID2», и т.д. ...] и всякий раз, когда происходят изменения в группе, она идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо он идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо он идет и найти activeSocketIds в этой группе и свистит весь этот уникальный идентификатор сообщения, которое, конечно, будет уведомлением. Может быть, оба из них не правильный подход, но хотел бы несколько советов о том, что будет! Спасибо
red house 87
1

голосов
0

ответ
112

Просмотры

Как отличить результат веб-сокетов в два подписываться канала?

Я новичок в веб-сокет, но теперь слишком четкое представление о том, как это работает. Моя проблема здесь прямо ниже: Я хочу, чтобы отличить результат двух событий. Интерфейс IWebSocketMethod {аннулируются GetTicker (); аннулированию GetOrderBook (); GetTrades недействительными (); } Абстрактный класс WebSocket {частное WebSocket4Net.WebSocket гнездо; общественный WebSocket (строка webSocketUrl) {Оправа = новый WebSocket4Net.WebSocket (webSocketUrl); Socket.Opened + = новый EventHandler (OpenEventHandler); Socket.error + = новый EventHandler (ErrorEventHandler); Socket.Closed + = новый EventHandler (CloseEventHandler); Socket.MessageReceived + = новый EventHandler (MessageReceivedEventHandler); Socket.Open (); Thread.Sleep (5000); } Публичная виртуальная пустота OpenEventHandler (объект отправителя, EventArgs е) {Console.WriteLine (» }} Теперь в этом коде им подписавших два события, но в MessageReceivedEventHandler, как я могу отличить результат. Или я должен создать несколько веб-подключение к сокету. Заранее спасибо
Ashish Garg
1

голосов
1

ответ
102

Просмотры

Отмена .Net WebSocket SendAsync Немедленно

Я использую WebSocket, чтобы отправить сообщение для 1000 клиентов. Я хочу, чтобы отменить websocket.SendAsync, если сообщение не было отправлено в течение 100 мс. Мой код находится ниже. вар cancelTaskToken = transport.GetTaskCancelToken (); cancelTaskToken.CancelAfter (100); вар WebSocket = transport.GetWebSocket () WebSocket. вар webSocketContext = новый WebSocketSendContext (WebSocket, message.Value, транспорт, счетчики, _trace); Контекст переменная = (WebSocketSendContext) webSocketContext; попробуйте {если (context.socket.State = System.Net.WebSockets.WebSocketState.Open!) возвращение; ждут context.socket.SendAsync (context.payload, System.Net.WebSockets.WebSocketMessageType.Binary, правда, cancelTaskToken.Token); context.transport.MarkHeatBeat (); context.counters.MessagesSentToClientTotal. Приращение (); context.counters.MessagesSentToClientPerSec.Increment (); } Задвижка (OperationCanceledException ех) {context.trace.Error (например, "отменить сокет отправки на {ConnectionID} WebSocket состояние:. {WebSocketState}", transport.ConnectionId, webSocket.State); context.counters.ErrorsTransportPerSec.Increment (); context.counters.ErrorsTransportTotal.Increment (); context.counters.ErrorsAllPerSec.Increment (); context.counters.ErrorsAllTotal.Increment (); } Но в моем тесте SendAsync всегда cacel после 1000 мс. Я не знаю, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения } Задвижка (OperationCanceledException ех) {context.trace.Error (например, "отменить сокет отправки на {ConnectionID} WebSocket состояние:. {WebSocketState}", transport.ConnectionId, webSocket.State); context.counters.ErrorsTransportPerSec.Increment (); context.counters.ErrorsTransportTotal.Increment (); context.counters.ErrorsAllPerSec.Increment (); context.counters.ErrorsAllTotal.Increment (); } Но в моем тесте SendAsync всегда cacel после 1000 мс. Я не знаю, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения } Задвижка (OperationCanceledException ех) {context.trace.Error (например, "отменить сокет отправки на {ConnectionID} WebSocket состояние:. {WebSocketState}", transport.ConnectionId, webSocket.State); context.counters.ErrorsTransportPerSec.Increment (); context.counters.ErrorsTransportTotal.Increment (); context.counters.ErrorsAllPerSec.Increment (); context.counters.ErrorsAllTotal.Increment (); } Но в моем тесте SendAsync всегда cacel после 1000 мс. Я не знаю, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения ConnectionId, webSocket.State); context.counters.ErrorsTransportPerSec.Increment (); context.counters.ErrorsTransportTotal.Increment (); context.counters.ErrorsAllPerSec.Increment (); context.counters.ErrorsAllTotal.Increment (); } Но в моем тесте SendAsync всегда cacel после 1000 мс. Я не знаю, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения ConnectionId, webSocket.State); context.counters.ErrorsTransportPerSec.Increment (); context.counters.ErrorsTransportTotal.Increment (); context.counters.ErrorsAllPerSec.Increment (); context.counters.ErrorsAllTotal.Increment (); } Но в моем тесте SendAsync всегда cacel после 1000 мс. Я не знаю, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения знаешь, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения знаешь, почему WebSocket не забрать мой 100мс настройки? Я использую serilog / SEQ проследить мое заявление. Вот след изображения
David Chen
1

голосов
0

ответ
558

Просмотры

Открытие соединения WebSocket в R, чтобы Binance

Я не могу найти способ сделать подключение WebSocket в R. Это похоже, как если бы все библиотеки для WebSockets в R амортизируются. Кто-нибудь нашел способ сделать подключение WebSocket к Binance? https://www.binance.com/restapipub.html#kline-wss-endpoint
Federico Marchese
1

голосов
0

ответ
412

Просмотры

Как сохранить WebSocket соединение открыто в то время как IOS приложение в фоновом режиме?

Как говорит название, как я в состоянии держать соединение открытым и получать сообщения, даже если приложение работает в фоновом режиме? Потому что теперь, каждый раз, когда я установить его на задний план или я заблокировать мой iPhone и разблокировать его, WebSocket обрывается. Я уже нашел решение, и он говорит, что я должен позволить Voip в моем Info.plist, а затем просто сделать socket.voipEnabled = верно, но потом говорит, что WebSocket не имеет voipEnabled члена. Кто-нибудь есть быстрый пример того, как запустить WebSocket в фоновом режиме? Я использую рамки STARSCREAM для WebSockets Спасибо заранее
Dominik Brandstetter
1

голосов
0

ответ
259

Просмотры

Утечки памяти с помощью веб-сокетов на коте

Мы используем Tomcat 8.5 на сервере Windows, и испытываем утечку памяти, вызванную использования веб-сокетов. Веб-сокет сервера выглядит следующим образом: пакет ad.ecs.async.websocket; импорт java.io.IOException; импорт java.util.Arrays; импорт javax.websocket.CloseReason; импорт javax.websocket.OnClose; импорт javax.websocket.OnError; импорт javax.websocket.OnMessage; импорт javax.websocket.OnOpen; импорт javax.websocket.Session; импорт javax.websocket.server.ServerEndpoint; импорт ad.common.Global; импорт ad.ecs.async.AsyncEngine; импорт ad.ecs.async.AsyncResponse; импорт ad.ecs.async.AsyncType; импорт ad.ecs.db.DatabaseEngine; импорт ad.ecs.db.paradox.User; импорт ad.ecs.security.engine.SecurityEngine; / ** * @author Serge Perepel * @since 23 авг 2017 12:23:32 PM * / @ServerEndpoint (значение = "/ asyncMsg", кодировщики = AsyncResponseEncoder. класс) общественного класса ECSAsync {@OnOpen общественного недействительными открытых (Session сессия) броски IOException {session.getBasicRemote () SendText ( "Соединение установлено"). } @OnMessage логин общественности String (Строка SESSIONID, сессия Session) {AsyncEngine.INSTANCE.wsConnect (сессия, SESSIONID); org.hibernate.Session dbSession = DatabaseEngine.getSessionFactory () openSession (). попробуйте {INT = идентификатор пользователя SecurityEngine.INSTANCE.getUserIDBasedOnSessionID (SESSIONID); Пользователь пользователя = (Пользователь) dbSession.get (User.class, идентификатор пользователя); если (! пользователь = NULL) {если (user.getNextLogin () == 1) {AsyncResponse ответ = новый AsyncResponse (); response.setType (AsyncType.None); response.setData (Arrays.asList ( "ПАРОЛЬ")); response.setObjData ( "ПАРОЛЬ"); AsyncEngine.INSTANCE.addTransientResult (SESSIONID, ответ); }}} {DbSession.close, наконец, (); } Вернуть «ОК»; } @OnClose общественного недействительного закрытия сессии (Session, CloseReason причина) {AsyncEngine.INSTANCE.wsDisconnect (сеанс); } @OnError общественной недействительная ошибки (сессия сессии, Throwable ошибка) {Global.INSTANCE.getLogHelper () исключение (ошибка). //session.close(new CloseReason (closeCode, reasonPhrase)); }} Передний конец открывает соединение и посылает неверный SESSIONID, который вызывает линию AsyncEngine.INSTANCE.wsConnect (сеансовую, SESSIONID); бросить исключение и после этого разъединения происходит на переднем конце. На данный момент передний конец открывает новое соединение и процесс переходит в петлю. Я предполагаю, что обработчик соединений предполагает, чтобы получить освобожден после разъединения произойдет. Но, похоже, накапливаться. Вот отчет из анализатора памяти плагина в Eclipse: один экземпляр «org.apache.coyote.AbstractProtocol $ ConnectionHandler» нагруженный «java.net.URLClassLoader @ 0x720029098» занимает 2,153,196,128 (88,10%) байт. Память накапливается в одном экземпляре «java.util.concurrent.ConcurrentHashMap $ Узел []» загружен «». Ключевые слова org.apache.coyote.AbstractProtocol $ ConnectionHandler java.util.concurrent.ConcurrentHashMap $ Node [] java.net.URLClassLoader @ 0x720029098 Вот метод wsConnect: общественный синхронизированы недействительный wsConnect (сессионный Session, String SESSIONID) {SecurityEngine.INSTANCE. checkSession (SESSIONID); // исключение здесь connections.put (SESSIONID, сессия); если (transientResponses.containsKey (SESSIONID)) {transientResponses.get (SESSIONID) .values ​​() поток () .forEach (р -> addTransientResult (SESSIONID, р)). }}
serge
1

голосов
0

ответ
41

Просмотры

Связь с рельсов с бесконечным рабочим

Я реализую работник по рельсам + кроссовки, которые будут работать в течение длительного времени (дни, месяцы). Она должна быть WebSocket связи с внешней службой. Первым относятся: это правильно запустить бесконечный процесс с помощью рубиновых + кроссовок? Как я могу контролировать, что нет утечки памяти? Второй вопрос: Каков наилучший способ для отправки новых команд в этот рабочий?
Kein
1

голосов
0

ответ
67

Просмотры

Java WebSocket: Невозможно получить HttpSession и PrincipalUser от HandshakeRequest объекта

Это моя реализация пользовательского конфигуратора: общественный класс TokenStore расширяет ServerEndpointConfig.Configurator {@Override общественной недействительного modifyHandshake (ServerEndpointConfig конфигурация, запрос HandshakeRequest, HandshakeResponse ответ) {super.modifyHandshake (конфигурации, запрос, ответ); HttpSession HTTPSession = (HttpSession) request.getHttpSession (); . // NULL Строка маркер = request.getHeaders () получить ( "маркер") получить (0). // имя NULL String = request.getUserPrincipal () GetName (). // NULL}} Я зарегистрировал класс TokenStore.java в @ServerEndpoint как конфигуратор. Когда соединение установлено с сервером, я не в состоянии получить HTTPSession, токенов и пользователя принципала. Все эти свойства в настоящее время получены утратившими внутри функции modifyHandshake (). Что я делаю неправильно здесь? Нужно ли мне отправить пользователю основной и маркер со стороны клиента? Если да, то каким образом? Почему это HttpSession является недействительным, даже если соединение между клиентом и сервером успешно установлено?
ishwor kafley
1

голосов
1

ответ
74

Просмотры

Flask Socket.Io: Persistence of initialized socketio after import

So I have the following websocket server api: //x.py ...... import y app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) @socketio.on('connected', namespace='/getDefects') def connected(): y.set_client_sid(request.sid) y.set_socketio(socketio) @socketio.on('disconnect', namespace='/getDefects') def disconnect(): print("Client disconnected") def sendDefects(def, sid, socketio_input): socketio = socketio_input socketio.emit('defects', def, room=sid, namespace='/getDefects') def processDefWithContext(text): with app.test_request_context(): y.processDef(text) @app.route('/Process', methods=['Post']) def process(): text = request.form.get('text') thread1 = Thread(target = processDefWithContext, args = (text,)) thread1.start() response = "Ok" return response if __name__ == '__main__': socketio.run(app, host='127.0.0.1', port=8080) //y.py import x .... clientSid = 0 socketIo = 0 def set_client(sid): clientSid = sid def set_socketio(socket_in): socketIo = socket_in processDef(text): .... def = .. x.sendDefects(def, clientSid, socketio) So basically x.py contains a web api which processes both in and out requests. It gets some data using a post request (process()) and at that point it will trigger some processing on that data in a new thread. The processing is done in y.py. After the processing is done, the new data needs to be sent to the frontend using a websocket from x.py So x.py imports y.py and y.py imports x.py. The problem is that when we call from y.py the function to send the data (sendDefects(..)) from x.py, the socketio is no longer initialized and will not be able to send it. The solution I found so far (I'm not an experienced Python programmer) is to send the socketio from x.py to y.py (set_socketio()) and back and then use it to send the data. But this solution seem a bit ugly. Can you recommend another way of doing this?
Alex
1

голосов
0

ответ
386

Просмотры

nodejs WebSockets соединения с локальных работами, но удаленной оленьей кожи

Я бег простого сервера WebSocket в nodejs сопзИте WebSocket = требуется ( «WS»); Const WSS = новый WebSocket.Server ({хост: '0.0.0.0', порт: 13000}); wss.on ( 'соединение', функция соединения (WS) {console.log ( "Новое соединение"); ws.on ( 'сообщение', функция входящего (сообщение) {console.log ( 'получен:% s', сообщение );}); ws.on ( 'ошибка', функция (е) {console.log ( 'ошибка', е);}); ws.on ( 'закрыть', функция (е) {console.log (» закрыть», е);}); ws.send ( 'что-то');}); Я могу подключиться к серверу с помощью: s = новый WebSocket ( «WS: // локальный: 13 000») и все в порядке. Но если я пытаюсь подключиться с другого компьютера: s = новый WebSocket ( «WS: // serveripaddress: 13000») Сервер показывает новое соединение близко 1006 Так что я знаю, что клиент подключается, но затем сразу же отключается. Я полностью потерял здесь, не знаю, как диагностировать мою проблему. Есть идеи? UPDATE Эти сценарии работы: два экземпляра EC2: работает два виртуальных машин Linux сообщающиеся через хост-только сети: работы и это не помогает: окна хост-машины и VM (принимающая только сеть): сбой экземпляра EC2 и один из моих ВМ: сбой Вот странно часть, если я простой сокет-сервер с помощью «чистых», все сценарии выше работы! Так что, похоже, как его еще вопрос сети (с WebSockets работать в некоторых сценариях), но это сетевой касаемая WebSockets (потому что сокет-сервер работает где WebSocket Doesnt)! Я не имею доступ к брандмауэру, что мои окна хоста-машина находится на так что если это вопрос, то я застрял. Но я буду стараться все это на другой машине хозяина, где у меня есть доступ к брандмауэру. Но если это был брандмауэр, я бы за исключением того, чтобы работать между хостом и окна виртуальной машины, потому что они по своей собственной виртуальной сети ...
chuck1
1

голосов
0

ответ
117

Просмотры

Amazon AWS WebSocket БНС Scale-In

Мы находимся в процессе разработки WebSocket приложения, которое будет работать на те же серверах приложений, которые служат наш API, которые все в пределах целевой группы новой Amazon Application Load Balancer. Я не уверен, что липкая сессия будет даже необходимо раз сокет модернизирован, однако, используя правила переадресации слушателя должен сделать легкую работу этого. Мое беспокойство исходит от масштабирования действий, выполняемых при автоматическом масштабировании целевых групп, в частности в масштабном в действии. В настоящее время масштабные действия основаны на RequestCountPerTarget, когда случаи получить прекращается, потому что метрика не выше порогового значения, это не гарантирует, что экземпляр не имеет активных соединений WebSocket. Я предполагаю, что это будет означать, что, когда экземпляр сверток и завершаются, эти соединения сокета будет резко прерываться. Что было бы лучшим способом борьбы с этим? Есть еще один показатель, который я мог бы использовать для автоматического горизонтального масштабирования группы на основе количества активных соединений на цель, чтобы лучше облегчить масштабирование WebSocket в дополнении к запросам API? Я думал о создании темы SNS и LifecycleHook для прекращения экземпляра на авто масштабирование группы, что я мог обращаться в WebSocketHandler, чтобы отправить сообщение всем гнездам на этом сервере, что им нужно будет отключить и подключить к другому серверу в балансировки нагрузки , Что было бы лучшим способом борьбы с этим? Есть еще один показатель, который я мог бы использовать для автоматического горизонтального масштабирования группы на основе количества активных соединений на цель, чтобы лучше облегчить масштабирование WebSocket в дополнении к запросам API? Я думал о создании темы SNS и LifecycleHook для прекращения экземпляра на авто масштабирование группы, что я мог обращаться в WebSocketHandler, чтобы отправить сообщение всем гнездам на этом сервере, что им нужно будет отключить и подключить к другому серверу в балансировки нагрузки , Что было бы лучшим способом борьбы с этим? Есть еще один показатель, который я мог бы использовать для автоматического горизонтального масштабирования группы на основе количества активных соединений на цель, чтобы лучше облегчить масштабирование WebSocket в дополнении к запросам API? Я думал о создании темы SNS и LifecycleHook для прекращения экземпляра на авто масштабирование группы, что я мог обращаться в WebSocketHandler, чтобы отправить сообщение всем гнездам на этом сервере, что им нужно будет отключить и подключить к другому серверу в балансировки нагрузки ,
Sivart
1

голосов
1

ответ
59

Просмотры

При использовании MQTT над WebSockets через mosquitto в качестве аа брокера, как я ограничить подключения к определенному набору происхождения?

У меня есть сервер MQTT брокера mosquitto настроить, а установка валюты работает. Проблема, однако, заключается в том, что любой источник может подключаться к моему примеру через WebSockets, что вызывает проблемы с безопасностью. Как ограничить, что к набору происхождения? Я не мог найти ничего в документации относительно этого.
Ayush Gupta
1

голосов
0

ответ
78

Просмотры

контрольная сумма с помощью golang WebSockets

Я использую пакет горилл WebSockets сделать сервер для обработки веб-сокетов соединений от клиентов. Я использую сокеты, чтобы отправить JSon массив целых чисел. Мне было интересно, если есть способ проверить, если все данные перевелись клиент без коррупции. Любая помощь будет здорово, спасибо
Julia12
1

голосов
1

ответ
292

Просмотры

WebRTC (простые сверстники), как восстановить

Я использую простой одноранговой для WebRTC. Я не могу найти, как восстановить сверстникам, если говорить один из них отключен от других. Является ли переподключение для WebRTC возможно? Без оглушения или поворота сервера участвуют?
twb
1

голосов
0

ответ
95

Просмотры

Actioncable в двигателе рельсы

Я делаю двигатель в режиме реального времени чата в рельсах. Я не могу понять, как использовать actioncable в нем. Я пытаюсь реализовать таким же образом, как это делается в рельсах приложение, сделав канал и подписываться на канал, но он не работает в моей рельсах двигателя. Существует не руководство по этой теме. Буду признателен, если кто-то может вести меня в этом отношении.
Maueez
1

голосов
0

ответ
238

Просмотры

Azure Speech To Text WebSocket [Python]

Я столкнулся с вопросом о направлении заголовка speech.config в ON_OPEN слушателя событий, он показывает ошибка, что я захватил ниже, кажется, веб-сокет не может быть построен успешно. Я после официального гида из Micrsoft И можно ли отправить заголовок после того, как соединение установлено? Большое спасибо за любую помощь! Вот мой код: импорт speech_recognition, как импорт запросы стерли импорт JSon импорт Ssl импорта urllib3 импорта xmltodict импорт время импорта WebSocket импорта потоки импорт UUID из googletrans импорта Переводчиков с URLLIB импорта UrlEncode из Auth импорт AzureAuthClient импорта DateTime импорта структура импорт pyaudio импорта SYS импорт StringIO импорт платформа импорт ОС Защита get_wave_header (frame_rate): «»»Сформировать WAV заголовок, который предшествует фактические аудиоданный, посылаемые на службу перевода речи. : Пары frame_rate: Частота дискретизации (8000 для 8kHz или 16000 для 16кГц). : Возвращение: двоичная строка ""», если не frame_rate в [8000, 16000]: поднять ValueError ( "Частота дискретизации, frame_rate, должно быть 8000 или 16000.") nchannels = 1 bytes_per_sample = 2 выход = StringIO.StringIO () выход. написать ( 'RIFF') output.write (struct.pack (»
DicksonC212
1

голосов
2

ответ
451

Просмотры

Symfony4: Gos WebSocket Ошибка MySQL сервер ушел

Я включил ПДО Периодическая Отклики для ГСН: WebSocketBundle, я все еще получаю эту ошибку время от времени: 9:41:28 ОШИБКА [WebSocket] Произошла ошибка соединения Предупреждение: Ошибка при отправке ЗАПРОСА пакета. PID = 30536 в /home/dev.symfony/libs/composer_vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php 10:00:23 ERROR [WebSocket] произошла ошибка соединения SQLSTATE [HY000]: Общая ошибка: 2006 сервер MySQL ушел в /home/dev.symfony/libs/composer_vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php линии 107 [ "connection_id" => 3365, "session_id" => «11667050395acf121709d30728596936 «] [] Другое дело, что если использовать никто DEV-сервер, в журналах нет ошибок, но если я войти в этот мгновенном появится сообщение об ошибке. Существует проблема открыта также на GitHub https: // GitHub. ком / GeniusesOfSymfony / WebSocketBundle / вопросы / 299, но ответов нет, поэтому я спросил и здесь. Спасибо.
Serghei
1

голосов
0

ответ
49

Просмотры

Как приостановить и возобновить «SocketServer»?

Как мы делаем паузу и возобновить «SocketServer» ??? Я смотрел на SocketServer документации, но я не мог найти ссылку. https://docs.python.org/3.4/library/socketserver.html. Я инициализировать мой SocketServer сервер = socketserver.UDPServer ((хост, порт), MyUDPHandler) server_thread = Thread (цель = server.serve_forever, арг = ()) server_thread.daemon = False server_thread.start () После того, как мы получим вход " отсутствует 5" , что означает SocketServer паузы автономном режиме в течение 5 секунд и возвращение, если text.split () [0] == 'отсутствует': длительность = text.split () [1] server.pause () ## ????? ?? PAUSE для печати ( 'Спящий') time.sleep (Int (длительность)) server.resume () ## ???????? Введение печать ( «Узел вставал»)
John Baek
1

голосов
0

ответ
87

Просмотры

okhttp WebSockets сообщений в recyclerview

У меня есть рабочий реализацию WebSocket добавления данных в recyclerview, но проблема в том, что это слишком много пунктов добавляются и это заболачивания вниз производительность приложения. Когда я добавляю детали, они добавляются в потоке пользовательского интерфейса. И я только сохраняя максимум 15 элементов в списке. По мере добавления новых элементов, 16 элемент удаляется. Будет ли RxJava наблюдаемых быть лучше для этого? Или я должен просто добавить каждый 10-ый элемент в список и игнорировать остальные 1000-х предметы добавили? Или есть какие-либо другие рекомендации для повышения производительности элементов постоянно добавляется?
Gagan Singh
1

голосов
0

ответ
77

Просмотры

Как обеспечить WebSocket отправку уведомлений некоторых подключенных клиентов в Node.js?

Скажем, я строю приложение чата, и он должен поддерживать переключение функции канала. У меня есть два пользователя в канал 1 чате и 2 других пользователей в канале 2-чате. Клиенты становятся все обновляется через WebSocket. Проблема заключается в том, что пользователи в канале 1 также получать уведомления WebSocket, когда другие пользователи в чате на канале 2, поскольку WebSocket транслирует уведомления для всех подключенных клиентов. Как я могу гарантировать мое WebSocket только ретранслирует подключенных клиентов на данном канале? Решение настоящее время я использую сейчас, чтобы фильтровать уведомления WebSocket на стороне клиента (я могу сделать это, потому что каждое сообщение с уведомлением имеет идентификатор канала), но это не самый лучший способ решить эту проблему. Я использую пакет NPM Ws для моего Node.js на стороне сервера. Заранее спасибо!
Zico Deng
1

голосов
1

ответ
574

Просмотры

How can I send binary data via WebSocket from Node.js to a web page?

I've tried sending a Float32Array and an ArrayBuffer a few different ways but the buffers I receive on the client side always seem empty. How should I send the data? How can I access it? Here's my latest attempt: server.js const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8000 }); wss.on('connection', function connection(ws) { var arr1 = new Float32Array(4); for (var i = 0; i < arr1.length; ++i) arr1[i] = (i + 100) / 7; // ws.send(arr1.buffer); var arr2 = new ArrayBuffer(8); for(var i = 0; i < 8; i++) arr2[i] = i * 17; ws.send(arr2); }); client.html var gData = null; var ws = new WebSocket("ws://192.168.0.7:8000"); ws.binaryType = 'arraybuffer'; ws.onmessage = function(message) { console.log(message.data); gData = message.data; }; Console Output ArrayBuffer(8) {} Also, just because I'm curious, how can I send binary data back to the server?
Jason
1

голосов
0

ответ
1.1k

Просмотры

реагировать родной Как использовать WebSocket?

Проект Структура Структура проекта Проблема Как вы видите выше, я хочу подключить React-Native-приложение с React-Web с помощью WebSocket. Я succed для передачи данных от React родного приложения для Server.js, но не передавать данные из Server.js Реагировать Web Client (App.js). Вот моя структура каталогов React (Web). Реагировать (Web) Структура / клиент / node_modules / государственные / ЦСИ /App.js package.json server.js package.json И мой код. Код App.js (React Web: ../client/src/App.js) импорт React, {Компонент} от 'реагируют'; импорт логотип из «./logo.svg»; импорт»./App.css'; Const WebSocket = требуется ( 'WS'); Класс App расширяет компонент {componentDidMount () {пусть Ws = новый WebSocket ( 'WS: // локальный: 8080'); ws.on ( 'сообщение', функция входящие (данные) {console.log (данные);}); } Визуализации () {возвращение (Добро пожаловать в React Для начала редактирования SRC / App.js и сохранить для перезагрузки.); }} Экспорта по умолчанию App; Server.js (React Web: ../Server.js) / ** * WebSocket * / Const = экспресс требуют ( 'экспресс'); Const HTTP = требуется ( 'HTTP'); Const WebSocket = требуется ( 'WS'); Const приложение = экспресс (); app.use (функция (Req, Рез, следующий) {res.header ( "Access-Control-Allow-Origin", "*"); res.header ( "Access-Control-Allow-Headers", «Происхождение, X -requested-С, Content-Type, Accept "); следующий ();}); // инициализировать простой HTTP-сервер константный сервер = http.createServer (приложение); // инициализировать экземпляр сервера WebSocket Const WSS = новый WebSocket.Server ({сервер}); wss.on (» подключение», функция соединения (WS) {ws.on ( 'сообщение', функция входящего (данные) {// трансляция для всех остальных. wss.clients.forEach (функция каждого (клиент) {console.log ( 'клиент', ! клиент); если (клиент == WS && client.readyState === WebSocket.OPEN) {client.send (данные);}}); console.log ( 'получен:% s', данные); ws.send ( `Здравствуйте, вы послали -> $ {данные}`);}); ws.on ( 'Привет', функция входящего (данные) {console.log ( 'получен:% s', данные);}); ws.send ( «Привет, Я WebSocket сервер»); }); // запускаем наш сервер server.listen (process.env.PORT || 8080, () => {console.log ( `Сервер начал порта $ {server.address () порт}.)`); }); App.js (React Native App) класс App расширяет React. Компонент {Конструктор (реквизит) {супер (реквизит); this.state = {открыто: ложь, связанная ложь,}; this.socket = новый WebSocket ( 'WS: //127.0.0.1: 8080'); this.socket.onopen = () => {this.setState ({подсоединена: истинно})}; this.testPusher = this.testPusher.bind (это); } TestPusher () {console.log ( 'testPusher'); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! состояние = {открыто: ложь, связанная ложь,}; this.socket = новый WebSocket ( 'WS: //127.0.0.1: 8080'); this.socket.onopen = () => {this.setState ({подсоединена: истинно})}; this.testPusher = this.testPusher.bind (это); } TestPusher () {console.log ( 'testPusher'); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! состояние = {открыто: ложь, связанная ложь,}; this.socket = новый WebSocket ( 'WS: //127.0.0.1: 8080'); this.socket.onopen = () => {this.setState ({подсоединена: истинно})}; this.testPusher = this.testPusher.bind (это); } TestPusher () {console.log ( 'testPusher'); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! //127.0.0.1:8080' ); this.socket.onopen = () => {this.setState ({подсоединена: истинно})}; this.testPusher = this.testPusher.bind (это); } TestPusher () {console.log ( 'testPusher'); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! //127.0.0.1:8080' ); this.socket.onopen = () => {this.setState ({подсоединена: истинно})}; this.testPusher = this.testPusher.bind (это); } TestPusher () {console.log ( 'testPusher'); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! testPusher '); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение! testPusher '); если (this.state.connected) {this.socket.send (JSON.stringify ({messgaes: '!! привет ~ ~ ~',})) this.setState (prevState => ({открытое: prevState.open })) } } // ... } Как я могу это сделать? Пожалуйста, дайте мне знать, спасибо! Есть ли другое решение? Если есть, пожалуйста, посоветуйте мне! Спасибо за прочтение!
Lanon
1

голосов
0

ответ
38

Просмотры

Как получить последние записи без обновления страницы с помощью CodeIgniter и WebSocket

DATATYPE: "JSON", кэш: ложь, успех: функция (данные) {если (data.success == верно) {вар сокет = io.connect ( 'HTTP: //'+window.location.hostname +': 3000 '); socket.emit ( 'registered_users', {имя: data.name, электронная почта: data.email}); }}, Ошибка: функция (XHR, статус, ошибка) {Alert (ошибка); }}); }); код, чтобы получить имя и адрес электронной почты из пользователей, которые только зарегистрировать с помощью штепсельных тегов HTML Div печатать имя пользователя и адрес электронной скрипт для сокета вар розетки = io.connect ( «HTTP: //'+window.location.hostname+»: 3000' ) ; socket.on ( 'registered_users', функция (данные) {$ ( "#user_name") .prepend (data.name); $ ( "#User_email") .prepend (data.email); });
MSP
1

голосов
0

ответ
161

Просмотры

urwid + WebSockets + asyncio - клиент / сервер

Я хочу сделать программу-сервер / клиент, основанный на WebSockets (сервер + клиент) и urwid пользовательский интерфейс на стороне клиента. Проблема я лицо, что я продолжаю получать «исключение задачи никогда не извлекается» ... Я работает, но это не чистый .... Мой сервер: импорт asyncio, WebSockets, случайный, JSON связано = множество () ## ######################## # конец цикла меньше процедур #################### ###### асинхронной защиту handle_read_external_data (): # теперь sumulated путем asyncio сна в 1 секунду и генератора случайных чисел ждут asyncio.sleep (1) данные = { 'значение': (random.random () * 0,4) - 0,2 + 40} возвращение асинхронных данных Защита broadcast_task (): глобальные связи во время Истинного: данные = ждет handle_read_external_data () data_json = json.dumps (данные) печать ( "Len:", длина (подключено)), если он подключен = множество (!): попробуйте: ждать asyncio. ждать ([ws.send (data_json) для WS в связном]), за исключением Exception как е: печать (е) ########################## # WebSockets ########################## асинхронной Защита consumer_handler (WebSocket, путь): глобальный подключен # Регистрация. connected.add (WebSocket) попробовать: асинхронная для сообщения в WebSocket: печать (сообщение), за исключением Exception при е: печать ( "Разрегистрировать WebSocket") connected.remove (WebSocket) ############## ############ # asyncio цикл событий ########################## четкости start_event_loop (): петля = asyncio .get_event_loop () задачи = asyncio.gather (broadcast_task (), websockets.serve (consumer_handler, '0.0.0.0', 8765),) попробовать: loop.run_until_complete (задачи), кроме исключений: печать ( "исключение потребляется"), за исключением BaseException : Распечатать(" MainLoop (заливка, event_loop = EVL, unhandled_input = show_or_exit) urwid_loop.start () задачи = asyncio.gather (consumer_handler ()) попробуйте: loop.run_until_complete (задачи), кроме asyncio.CancelledError: пройти urwid_loop.stop () loop.close ( ) если __name__ == "__main__": главный () Когда я запускаю сервер я получил: Len: 0 Len: 0 Len: 0 ... до сих пор так хорошо. Когда я начинаю клиент сервер показывает мне: Len: 0 Len: 0 Len: 1 Len: 1 Len: 1 ... На данный момент я нажимаю CTRL + C на клиенте я получил: Len: 1 Разрегистрировать WebSocket Len: 0 Это разыскиваемое поведение, за исключением того, что в клиенте я получил исключение и мой терминал «коррумпированный», как это до сих пор в «urwid» модус. Чистый выход, нажав на кнопку Q, она дает в чистом выходе для клиента, и терминал в порядке. На стороне сервера, есть то сообщение "
karelv
1

голосов
1

ответ
230

Просмотры

WebSocket CdiUtils NPE, используя

Процесс (AbstractProtocol.java:754) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1385) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java: 49) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:745) Мой отладчик показывает, что на CdiUtils: 230 beanManager является недействительным, и я подозреваю, но не может подтвердить, что FacesContext равна нулю на CdiUtils: 213. Я подозреваю, что это происходит из-за путаницы от того, несколько контейнеров (Tomcat, CDI, Spring и JSF) в то же самое время. Я как Spring Security, RestTemplate и JdbcTemplate, так что я ма немного неохотно дают Spring вверх. Вот мой Нажмите боб. Я бросил всю аннотацию на него у меня был: @Component @Scope ( «Application») общественный класс PushBean реализует Serializable {частных статический окончательный длинный serialVersionUID = -6558314691176100417L; @Inject @Push (канал = "facilitatorBroadcastMessages") частный PushContext толчок; частная строка facilitatorBroadcastMessage; общественного недействительными setFacilitatorBroadcastMessage (String сообщение) {this.facilitatorBroadcastMessage = сообщение; } Общественного недействительными broadcastFacilitatorMessage () {push.send (facilitatorBroadcastMessage); }} Facelet код, который посылает сообщение: JS WebSocket слушателя:. Функция websocketListener (сообщение, канал, событие) {$ ( "# facilitatorBroadcastMessage") innerHTML = сообщение; PF (» facilitatorBroadcastMessageDialog ') шоу (). } JSF WebSocket тег и код для отображения сообщения: Любые идеи, как это исправить?
snakedog
1

голосов
1

ответ
261

Просмотры

WebSocket синхронизации соединения с двухсторонней

Я вынужден использовать вышеупомянутый поток данных. Node.js сервер принимает вызов, чтобы запустить команду для клиента, подключенного к серверу Node.js по WebSocket. Нормальный поток заканчивается на клиенте после того, как браузер WebSocket вызвать команду на библиотеку JavaScript. Es. REST ВЫЗОВ -> KillAllHumans NODEJS -> передать KillAllHumans в WebSocket; БРАУЗЕР -> OnMessage -> javascript_library.killAllHumans; Специальный метод REST ENDPOINT должен возвращать значение, сгенерированное библиотекой JavaScript поэтому в Node.js должен оставаться в ожидании, пока WebSocket клиент не отвечает. Возникает вопрос: возможно ли это? Это простой WebSocket код в браузере. echo_service = новый WebSocket (websocketUrl, "эхо-протокол"); echo_service.onmessage = функция (событие) {результат вар = javascript_library.manageAction (event.data); приставка. войти ( "killAllHumansResults:" + результат); возвращать результат; } Возвращение утверждение кажется не работает. Редакция: это тело REST API, который получил REST ВЫЗОВА. wsServer класс объекта WebSocket. Посмотрите на результат вар. это ответ возвращается клиенту, который ссылается на REST CALL (с ​​использованием функции обратного вызова). Результат переменная = this._wsServer.sendMessage (,); console.log ( "возвращение остальное:" + результат); обратный вызов (ошибка, результат); вернуть; Для WebSocket объекта им с помощью этого проект узла: https://www.npmjs.com/package/websocket отправить сообщение является простым connection.send вызова (сообщение); Клиент правильно принимает сообщение. «KillAllHumansResults» правильно печатается. Unfortunally «остальное возвращение:» не определено.
RetroMime
1

голосов
1

ответ
215

Просмотры

Отправка сообщения Aiohttp WebSocket между работниками

Aiohttp имеет большую поддержку WebSocket: # словарь, где ключи идентификаторы пользователя, и значения WebSocket соединения users_websock = {} класс WebSocket (web.View): асинхронная Защиту получить (само): # создание WebSocket экземпляра Ws = web.WebSocketResponse ( ) ждут ws.prepare (self.request) users_websock [ «some_user_id»] = Ws асинхр для сообщ в WS: # обрабатывать входящие сообщения И теперь, когда мне нужно отправить сообщение на специальный пользователь: # с использованием ws.send_str () в передачи данных через подключение WebSocket Ws = users_websock [ «user_id»] ws.send_str ( «Некоторые данные») Это хорошо до тех пор, как у меня есть только один рабочий сервер. Но в производстве у нас всегда есть несколько рабочих. И, конечно, каждый работник имеет собственный другой словарь users_websock. Таким образом, фактическая проблема возникает, когда нужно отправить сообщение от работника 1 к некоторому пользователю, подключенному к рабочему 2. И вопрос в том, как и где я должен хранить список WebSocket соединений, так что каждый работник может получить необходимое соединение? Может быть, я могу хранить в БД некоторый идентификатор соединения или что-то, чтобы создать WebSocket экземпляр во всем мире? Или есть другой способ подойти к этому?
Alexander Skr
1

голосов
0

ответ
110

Просмотры

Отправить код ядра через обработчик HTTP в jupyter kernelgateway пользовательской личности

Я могу подключиться к jupyter ядра шлюза WebSocket личности, доступ к HTTP конечных точек и отправлять сообщения в ядро ​​через WebSocket. Как я могу добавить обработчик HTTP, который посылает предопределенное сообщение через WebSocket к ядру? Например, я хочу добавить Localhost: 8888 / load_data обработчик, который посылает сообщение ядру jupyter открыть определенный файл. [Я знаю, как добавить обработчик через пользовательскую индивидуальность. Я просто удивляюсь, как отправить сообщение из обработчика HTTP для ядра (например, через WebSocket или ZMQ) из пользовательской личности.]
Matthias123
1

голосов
0

ответ
223

Просмотры

WebSocket WSS: // дает ошибку таймаута квитирования в HTTPS

Я реализовал сертификат Comodo в одном из моего сайта любых хау, я получаю WebSocket WSS: // дает ошибку таймаута квитирования, я использую угловые 2 и PHP для подключения. WebSocket был правильно работать до внедрения протокола HTTPS. Код точно так же на https://phppot.com/php/simple-php-chat-using-websocket только WS изменяется на WSS в этом коде. Спасибо
user715070
1

голосов
0

ответ
301

Просмотры

Подписаться на WebSocket API с использованием Laravel 5

Я хотел бы создать простую команду Laravel, которая регулярно проверяет WSS: //www.bitmex.com/realtime WebSocket API, я не знаю, где начать с этого. Любые идеи, помогут
user3489502
1

голосов
0

ответ
178

Просмотры

JHipster WebSockets поддержки в microservice архитектуры

Я пытался реализовать WebSockets в одном из microservices в моем проекте. Тем не менее, я узнал Zuul прокси не поддерживает WebSockets по умолчанию и jhipster разработчиков рекомендую добавление WebSockets к шлюзу проекта как в https://github.com/jhipster/generator-jhipster/issues/7335. Есть ли лучшее решение для этой проблемы, используя другую прокси-сервер, который позволит добавляющим WebSockets к microservice?
Feras Odeh
1

голосов
0

ответ
36

Просмотры

В сценарии, не браузера Какие преимущества дает WebSockets через HTTP?

Я понимаю, что WebSockets работает на более высоком уровне в сетевом стеке и не должно быть по сравнению с нормальным гнездом. WebSocket вызовы должны быть в идеале по сравнению с HTTP, когда мы говорим о производительности. Тем не менее, я до сих пор не уверен, почему можно было бы выбрать webosockets. Почему WebSocket туннель быстрее подход, чем обычный HTTP через TCP? Это лучше, чем XMPP в производительности?
1

голосов
0

ответ
35

Просмотры

PHP stream_select возвращается потоки, которые не имеют ничего читать

У меня есть строка кода, который выглядит следующим образом: stream_select ($ streamsReadyToRead, $ lcNull, $ lcNull, 0, 31250); По словам руководства, это должно «увидеть, если персонажи становятся доступны для чтения», и $ streamsReadyToRead должны быть заполнены только потоки, которые готовы для чтения. Однако, я читаю сокеты, как это: Еогеасп ($ streamsReadyToRead в $ streamToRead) {$ текст = fgets ($ streamToRead); если (пусто ($ текст)) {эхо «Это никогда не случится, но делает!»; }} Если я посылаю что-то маленькое через ручей, он отлично работает. Когда я более 1000 символов или так, иногда не читает ничего! Есть ли что-то я не понимая? Почему stream_select говорит мне сокет символов, доступных для чтения, когда на самом деле нет ничего готово для чтения еще?
Skeets
1

голосов
0

ответ
81

Просмотры

Угловая прокси сбросив WebSocket Обновление заголовка

Я использую прокси-сервер с угловыми CLI нг служить --proxy-конфигурации proxy.conf.json со следующей конфигурацией { «/ апи / *»: { «WS»: правда, «безопасный»: ложь, «цель» : "HTTP: // локальный: 80", "LOGLEVEL": "отладка"}} в то время как соединения HTTP правильно перенаправлены соединения WebSocket не работают. В Wireshark можно видеть, что входящее соединение (браузер с угловым Proxy) содержит необходимые заголовки WebSocket: втор-WebSocket-расширения: permessage-Deflate; client_max_window_bits втор-WebSocket-ключ: ... втор-WebSocket-версия: 13 Обновление: подключение WebSocket: Upgrade Но, глядя на исходящее соединение (угловую прокси-сервер) заголовок обновление отсутствует: втор-WebSocket-расширения: permessage-выкачивает ; client_max_window_bits втор-WebSocket-ключ: ... втор-WebSocket-версия: 13 Из-за недостающего заголовка обновления соединение затем отвергнута на стороне сервера. Нужно ли мне другую конфигурацию, чтобы сохранить поля заголовка WebSocket или это ошибка? Угловая CLI: 6.0.3 Node: 10.0.0 Операционная система: Linux x64
0

голосов
0

ответ
5

Просмотры

WebSocket connection to 'wss://io/?EIO=3&transport=websocket' failed: Error during WebSocket handshake: Unexpected response code: 404

Я использую этот код в моей реакции компонент для подключения к сокету. вар сокет = IO (Config.SOCKET_URL, {транспортирует: [ 'WebSocket']}); socket.on ( 'соединение', функция () {console.log ( "розетка подключена");}); А вот мой Nginx файловый сервер {слушать 80; server_name SITE_URL; client_max_body_size 128m; вернуть 301 site_URL $ REQUEST_URI; } {Сервер слушать 443; SSL на; ssl_certificate /var/www/chain.crt; ssl_certificate_key /var/www/private.key; server_name SITE_URL; client_max_body_size 128m; Местонахождение / {proxy_pass HTTP: // IP: PORT; proxy_set_header X-Forwarded-Прото HTTPS; proxy_set_header хоста $ HTTP_HOST; proxy_http_version 1.1; proxy_set_header Обновление $ http_upgrade; proxy_redirect выкл; proxy_set_header Обновление $ http_upgrade; proxy_redirect выкл; }} Но, к сожалению, мой сокет не может быть в состоянии подключиться к конечному серверу точки. Это ошибка я получаю соединение WebSocket к «WSS: // И.О. / EIO = 3 & транспорт = WebSocket?» Не удалось: Ошибка при WebSocket рукопожатия: Неожиданный код ответа: 404
Profer

Просмотр дополнительных вопросов