1

Javascript代码为此工作:

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

但我需要在 C# 中实现它。我尝试了下面显示的代码,但它不起作用:

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);
4

1 回答 1

1

我假设您正在使用socket.io。我将在这里参考文档:

Socket.IO不是 WebSocket 实现。尽管 Socket.IO 确实尽可能使用 WebSocket 作为传输,但它为每个数据包添加了额外的元数据。这就是为什么WebSocket 客户端将无法成功连接到 Socket.IO 服务器,而 Socket.IO 客户端也将无法连接到普通 WebSocket 服务器。

不用说websocket-sharp是一个 websocket 客户端实现。尽管如此,并不是所有的希望都消失了:

我不想 c/p 答案,所以请在这里找到替代的客户端库:Communicating with a socket.io server via c#

于 2021-01-23T08:26:24.137 回答