Я хочу реализовать подключение к веб-сокету на стороне клиента в С#

Код Javascript работает для этого:

function testSocket()
{  
    var socket = io("http://localhost:3001/",{
      query:{Token:"YWRtaW5Ac3RsdGVjaC5pbjpzdGxAMTIzOjE2MTEzNDE3OTk1OTY="}, 
    });
    socket.on('message-processed',(event,callback)=>{
      writeToScreen(event);
    });
}

но мне нужно реализовать это на С#. Я попробовал код, показанный ниже, но он не работает:

var ws = new WebSocket("ws://localhost:3001/socket.io/Token=YWRtaW5Ac3RsdGVjaC5pbjpz=");
                
ws.Connect();
ws.OnMessage += (sender, e) =>
        Console.WriteLine("Laputa says: " + e.Data);

ws.Send("message-processed");
Console.ReadKey(true);

person Manish Goyal    schedule 23.01.2021    source источник
comment
Также рассмотрите SignalR, если ваша сторона JavaScript не исправлена ​​​​в ее реализации.   -  person Caius Jard    schedule 23.01.2021


Ответы (1)


Я предполагаю, что вы используете socket.io. Я буду ссылаться на документацию здесь:

Socket.IO НЕ является реализацией WebSocket. Хотя Socket.IO действительно использует WebSocket в качестве транспорта, когда это возможно, он добавляет дополнительные метаданные к каждому пакету. Вот почему клиент WebSocket не сможет успешно подключиться к серверу Socket.IO, а клиент Socket.IO также не сможет подключиться к обычному серверу WebSocket.

Излишне говорить, что websocket-sharp ЯВЛЯЕТСЯ реализацией клиента веб-сокета. Как бы то ни было, не всякая надежда потеряна:

Я не хочу копировать ответы, поэтому, пожалуйста, найдите альтернативные клиентские библиотеки здесь: -c-sharp">Взаимодействие с сервером socket.io через c#

person Athanasios Kataras    schedule 23.01.2021
comment
код доступен для .net, но я использую .net core - person Manish Goyal; 23.01.2021
comment
github.com/Beffyman/SocketIo.Core попробуйте этот. - person Athanasios Kataras; 23.01.2021
comment
Не работает @Athanasios Kataras - person Manish Goyal; 25.01.2021
comment
Вы должны быть немного более конкретным для меня, чтобы помочь. - person Athanasios Kataras; 25.01.2021
comment
Мне просто нужно реализовать соединения сокетов на стороне клиента из моего основного проекта asp.net, код сокета на стороне сервера написан в узле js, и я не могу найти решение. - person Manish Goyal; 26.01.2021
comment
Отсутствие работы может означать что угодно. Вы должны сузить то, что происходит. - person Athanasios Kataras; 26.01.2021