Как подключить SocketIO4Net к Zennoposter?

darkalfa

Client
Регистрация
27.11.2016
Сообщения
9
Реакции
0
Баллы
1
Такое возможно вообще?
Пробовали подключать WebSocket4Net.dll и никак
 
Через using или как библиотеку ?
И так и так)
http://c2n.me/3GVfBvM
Код:
Развернуть Свернуть Копировать
using WebSocket4Net;
WebSocket websocket = new WebSocket("ws://localhost:2012/");
websocket.Opened += new EventHandler(websocket_Opened);
websocket.Error += new EventHandler<ErrorEventArgs>(websocket_Error);
websocket.Closed += new EventHandler(websocket_Closed);
websocket.MessageReceived += new EventHandler(websocket_MessageReceived);
websocket.Open();
private void websocket_Opened(object sender, EventArgs e)
{
websocket.Send("Hello World!");
}
 
И так и так)
http://c2n.me/3GVfBvM
Код:
Развернуть Свернуть Копировать
using WebSocket4Net;
WebSocket websocket = new WebSocket("ws://localhost:2012/");
websocket.Opened += new EventHandler(websocket_Opened);
websocket.Error += new EventHandler<ErrorEventArgs>(websocket_Error);
websocket.Closed += new EventHandler(websocket_Closed);
websocket.MessageReceived += new EventHandler(websocket_MessageReceived);
websocket.Open();
private void websocket_Opened(object sender, EventArgs e)
{
websocket.Send("Hello World!");
}
вам для этого нужно выносить код в Общий код или писать сразу в codecreator.
 
Да интересно, возможно ли, в принципе, сделать так, чтобы зенно работал с SocketIO?
Код выше здесь особой роли не играет. Это пример, который пытались подключить и проверить на работоспособность.
 
вам для этого нужно выносить код в Общий код или писать сразу в codecreator.
Для начала надо понять, для чего это вообще надо. Какая конечная цель.
Т.к вынести этот код просто так в Общий не получится.
Это надо запилить отдельный класс, в него запихать все это, и уже из экшена C# создавать объект, и вызывать метод, который и будет делать все основное, создавать объект класса WebSocket и подписываться на обработчики.
Но даже этого мало.

Суть в том, что WebSocket работает по событийной модели.
А шаб работает последовательно. Т.е. экшен не будет ждать, пока отработают нужные события.
Как это все упаковать в последовательную работу, это еще надо репу почесать основательно.:-)

Первое что в голову приходит, это делать бесконечный цикл, выход из которого это проверка какого то св-ва, в объекте, в котором будет находится WebSocket.
Т.е. делается цикл(в экшене c#) с задержкой скажем 1 сек. и в цикле идет проверка какого то св-ва, которое будет инициализировано, как только стрельнет нужное событие.

Но это лютые костыли.:D
 
Для начала надо понять, для чего это вообще надо. Какая конечная цель.
Т.к вынести этот код просто так в Общий не получится.
Это надо запилить отдельный класс, в него запихать все это, и уже из экшена C# создавать объект, и вызывать метод, который и будет делать все основное, создавать объект класса WebSocket и подписываться на обработчики.
Но даже этого мало.

Суть в том, что WebSocket работает по событийной модели.
А шаб работает последовательно. Т.е. экшен не будет ждать, пока отработают нужные события.
Как это все упаковать в последовательную работу, это еще надо репу почесать основательно.:-)

Первое что в голову приходит, это делать бесконечный цикл, выход из которого это проверка какого то св-ва, в объекте, в котором будет находится WebSocket.
Т.е. делается цикл(в экшене c#) с задержкой скажем 1 сек. и в цикле идет проверка какого то св-ва, которое будет инициализировано, как только стрельнет нужное событие.

Но это лютые костыли.:D
не туда )
 
Для начала надо понять, для чего это вообще надо. Какая конечная цель.
Т.к вынести этот код просто так в Общий не получится.
Это надо запилить отдельный класс, в него запихать все это, и уже из экшена C# создавать объект, и вызывать метод, который и будет делать все основное, создавать объект класса WebSocket и подписываться на обработчики.
Но даже этого мало.

Суть в том, что WebSocket работает по событийной модели.
А шаб работает последовательно. Т.е. экшен не будет ждать, пока отработают нужные события.
Как это все упаковать в последовательную работу, это еще надо репу почесать основательно.:-)

Первое что в голову приходит, это делать бесконечный цикл, выход из которого это проверка какого то св-ва, в объекте, в котором будет находится WebSocket.
Т.е. делается цикл(в экшене c#) с задержкой скажем 1 сек. и в цикле идет проверка какого то св-ва, которое будет инициализировано, как только стрельнет нужное событие.

Но это лютые костыли.:D
Почему бы в кубике не создать делегат, объект класса WebSocket (сам вебсокет создать в общем коде) и подписаться на событие сокета. Может я не всю суть вебсокетов уловил, но с событиями так и делается.
Есть 2 минуса:
1) придется делать все в одном кубике
2) лучше тогда организовать из кубика дополнительный поток
P.S. есть ещё ManualResetEventSlim, который избавляет от необходимости в ожидании действий в бесконечном потоке с паузами и активирует все в нужное время.
 
Последнее редактирование:
вебсокет используется в директе инсты, например
Ок. Есть идеи как событийную модель упаковать в зенку?

Почему бы в кубике не создать делегат, объект класса WebSocket (сам вебсокет создать в общем коде) и подписаться на событие сокета.
Что это тебе даст? Тоже х. только в другой руке. Я предлагал сделать обертку поверх класса, чтобы все кишки спрятать в OwnCode, а из экшена только управлять.

Может я не всю суть вебсокетов уловил, но с событиями так и делается.
Да тут без разницы, основная суть что класс работает на основе событий.

лучше тогда организовать из кубика дополнительный поток
Зачем?

P.S. есть ещё ManualResetEventSlim, который избавляет от необходимости в ожидании действий в бесконечном потоке с паузами и активирует все в нужное время.
Ты бы лучше вместо умных речей кусок кода показал который работает.:-)

Вот про что говорил.
ae1ea7d09c624a56bf5b9d8fa2ef2ee1.png

SomeClass это любой класс с событиями. Тот же WebSocket.
В конструктор впихнул вызов события, типа эмуляции.

Wrapper это обертка для удобства работы.
Делаем два метода, один для создания нужного объекта, и подписки на события - Create.
Второй - Destroy, чтобы отписаться от событий.

Также для каждого нужного события добавляем св-во, которое будет инициализироваться в обработчике, как только сработает событие.

А теперь собственно логика работы.
56603b5ad80f4333a0619b00c46ae6df.png

Создали объект, подписались на события.
В бесконечном цикле проверяем св-во. Тут уже зависит от кол-ва событий которые будут использоваться(соответственно и такого же кол-ва св-в), и логику продумывать конкретно для каждого случая.
Как выполнилось какое то условие, отписываемся от событий, выходим из цикла.
Делаем такую проверку через какой то промежуток времени. Можно поставить скажем 200мс, должно быть норм.

Если у кого есть идеи как это грамотней сделать, с удовольствием выслушаю, т.к самому интересно.:-)
 
  • Спасибо
Реакции: Radzhab

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)