2017-01-15 3 views
-1

Я искал использование websocketd в качестве сервера веб-сокетов, но я не вижу, как его можно использовать для ответа на полный набор событий в сети, таких как onerror и onclose.Как обрабатывать полный набор событий websocket в websocketd?

+0

Возможно, добавьте небольшой контекст и некоторые полезные теги к вашему вопросу. О какой среде разработки и языке программирования вы говорите? Что такое websocketd? – jfriend00

+0

http://websocketd.com – bigtunacan

+0

Это демон websocket. Вы пишете приложение на любом языке, который хотите, а затем используйте websocketd для его демонстрации. Он читает/записывает в stdin/stdout. Существует очень мало существующей документации, хотя неясно, как получать какие-либо события, кроме сообщения, или даже поддерживать его. Учитывая знание websocketd, я думаю, что мой вопрос достаточно. Я бы пометил это websocketd вместо websockets, но такой тег не существует уже сегодня. – bigtunacan

ответ

1

То, о чем вы просите, это не то, как это работает. Вы не программируете websocketd, и у него нет никаких событий. Вы используете автономный инструмент для переноса некоторой другой программы, а затем каждое входящее соединение запускает экземпляр программы, которую вы настроили для ее переноса. Затем любые входящие сообщения отправляются на stdin этой программы, и любой ответ stdout из программы отправляется обратно клиенту, подключенному к серверу websocket. Вы можете думать об этом как о инструменте, который просто передает входящие сообщения веб-узлов в stdin вашего приложения и фиксирует вывод и передает его обратно клиенту.

Как вы, по-видимому, знаете, идея состоит в том, что без какого-либо программирования на сервере вы можете создать удаленный интерфейс для любого инструмента командной строки на вашем компьютере (с соответствующими предостережениями/рисками), которые ожидают получить его ввод от stdin и записывает свой вывод в stdout. Этот удаленный интерфейс может находиться на веб-странице или может быть любой другой программой, которую вы пишете, которая использует webSocket для связи с сервером websocketd, который вы настроили и запускаете на своем хосте. Таким образом, вы пишете только клиентскую сторону. В документе websocketd не говорится, что он делает с выходом, который он находит на stderr.

Когда клиент веб-сокета подключается к этому серверу веб-сервера, будет запущен экземпляр вашей программы. Итак, по сути, событие onconnect - это то, что ваша программа началась. Когда клиент отключится, он убьет вашу программу (это, по сути, событие onclose).

Непонятно, что он делает, если он получает ошибки webSocket при отправке данных обратно клиенту. Вам нужно будет проанализировать код https://github.com/joewalnes/websocketd, чтобы попытаться понять это (он, по-видимому, написан в go. Предположительно, поскольку это сам сервер и нет интерфейса, возможно, самое большее, что происходит, это то, что ошибка регистрируется или, возможно, WebSocket отключен. Без изменения кода вы не можете принять участие в том, что происходит, когда возникает ошибка связи с webSocket. Демон имеет предварительно запрограммированное поведение.

Я вижу примеры here in the code, где речь идет об ошибках чтения stdout, и он регистрирует эти ошибки, а затем закрывает поток stdout.

code here, похоже, закрывает входящий webSocket, если он получает ошибки, пока е чтение из него.

Смежные вопросы