Как обрабатывать ошибки и закрытие соединения с помощью WampSharp
Я работал с WampSharp, то есть клиентской библиотекой, предоставленной для соединения с webbcket wamp autobahn.
Я успешно подключился к веб-розетке Autobahn Wamp, которую я создал в python, используя клиентское приложение.Net, используя следующий код (используя WampSharp):
DefaultWampChannelFactory channelFactory = new DefaultWampChannelFactory();
channel = channelFactory.CreateChannel(serverAddress);
channel.Open();
здесь serverAddress: 127.0.0.1:8000 (т.е. мой websocket начинается с номера порта 8000 моей локальной машины).
Я использую механизм pubsub для обмена данными, предоставляемыми autobahn wamp websocket, используя следующий код:
public void Subscribe()
{
ISubject<string> subscribe1 = channel.GetSubject<string>(@"simple/topicSubject1");
IDisposable subject1 = subscribe1.Subscribe(msg => MessageRecieved(msg));
}
public void Publish()
{
ISubject<string> subjectForPublish = channel.GetSubject<string>(@"simple/topicSubject1");
subjectForPublish.OnNext(sd.SerializeObject(DataToPublish));
}
Все эти процессы выполнены успешно. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти никаких обработчиков для обработки ошибок и потери соединения, как мы это делаем в традиционной веб-розетке. В традиционном websocket у нас есть обработчики, такие как:
webSocket.Error += new EventHandler<SuperSocket.ClientEngine.ErrorEventArgs>(webSocket_Error);
webSocket.Closed += new EventHandler(webSocket_Closed);
Мне нужно для достижения вышеуказанной функциональности с помощью Wampsharp.
Заранее спасибо.
1 ответ
Попробуй это:
DefaultWampChannelFactory factory = new DefaultWampChannelFactory();
IWampChannel<JToken> channel = factory.CreateChannel("ws://localhost:9090/ws");
IWampClientConnectionMonitor monitor = channel.GetMonitor();
monitor.ConnectionError += ConnectionError;
monitor.ConnectionEstablished += ConnectionEstablished;
monitor.ConnectionLost += ConnectionLost;
await channel.OpenAsync();