Пример клиента C # websocket atmosphere

#c# #websocket #atmosphere

#c# #websocket #атмосфера

Вопрос:

Возможно ли использовать атмосферу в C # Windows Form? На стороне сервера используется язык Java. Я хочу подключиться к WebSocket через C # и просматривать входящие сообщения.

Ответ №1:

Ответ будет и да, и нет. Atmosphere — это фреймворк, который поддерживает веб-сокеты, отправленные отправителем события и длительный опрос.

В приведенном выше смысле ответ отрицательный. Не существует готовой библиотеки, которая обрабатывает все это за вас.

С другой стороны, поскольку вы можете поддерживать веб-сокеты из своего приложения, я думаю, что это просто вопрос подключения к серверу atmosphere с помощью веб-сокетов.

Одним из решений для этого может быть эта библиотека здесь: https://github.com/Marfusios/websocket-client

Пример:

 var exitEvent = new ManualResetEvent(false);
var url = new Uri("wss://xxx");

using (var client = new WebsocketClient(url))
{
    client.ReconnectTimeout = TimeSpan.FromSeconds(30);
    client.ReconnectionHappened.Subscribe(info =>
        Log.Information($"Reconnection happened, type: {info.Type}"));

    client.MessageReceived.Subscribe(msg => Log.Information($"Message received: {msg}"));
    client.Start();

    Task.Run(() => client.Send("{ message }"));

    exitEvent.WaitOne();
}
  

Я не пробовал это на практике, но я не понимаю, почему это не сработает.

Комментарии:

1. Я использовал эту библиотеку, но не получил ответа. И подключается к » push.example.com » в то время как URL-адрес websocket выглядит следующим образом » wss://push.example.com/market-pusher/market-558585256_bebd0326-3bde-454f-aecb-a7f5aa1f273d?X-Atmosphere-tracking-id=0amp;X-Atmosphere-Framework=2.3.5-javascriptamp;X-Atmosphere-Transport=websocketamp;X-Atmosphere-TrackMessageSize=trueamp;Content-Type=application/jsonamp;X-atmo-protocol=trueamp;X-Atmosphere-WebSocket-Proxy=trueamp;Pusher-Security-Token=ZTH44UNkxnRfYMBV6XW6LbxP2j4aNOYnyLPdBrwmJHGv3jwmOzKw4g1BMmS5abxdzbQI0Lc2BVA3B1nNonlzrA=% 3D »

2. какая ссылка / пространство имен является термином «Журнал» здесь: это ошибка для меня.