【问题标题】:I want to implement client-side web socket connection in C#我想在 C# 中实现客户端 Web 套接字连接
【发布时间】:2021-01-23 06:23:58
【问题描述】:

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

【问题讨论】:

  • 如果您的 JavaScript 端在其实现中未修复,也请考虑 SignalR

标签: c# asp.net websocket socket.io websocket-sharp


【解决方案1】:

我假设您使用的是socket.io。我将在此处参考文档:

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

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

我不想复制答案,所以请在此处查找替代客户端库:Communicating with a socket.io server via c#

【讨论】:

  • 代码可用于 .net,但我使用的是 .net core
  • 你必须更具体一点,我才能提供帮助。
  • 我只需要从我的asp.net核心项目实现客户端套接字连接,套接字的服务器端代码是用节点js编写的,无法找到解决方案。
  • 不工作可能意味着什么。您必须缩小范围。
猜你喜欢
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 2021-12-22
  • 1970-01-01
相关资源
最近更新 更多