在 C# 中使用 Socket.IO
Posted
技术标签:
【中文标题】在 C# 中使用 Socket.IO【英文标题】:Using Socket.IO in C# 【发布时间】:2015-10-08 12:32:28 【问题描述】:我正在尝试从 Wikimedia 站点读取 Socket.IO 流。有各种语言的示例代码,但我需要让它在 C# 中工作
源码链接在这里:
https://wikitech.wikimedia.org/wiki/RCStream
这里是 javascript 实现。
// Requires socket.io-client 0.9.x:
// browser code can load a minified Socket.IO JavaScript library;
// standalone code can install via 'npm install socket.io-client@0.9.1'.
var io = require( 'socket.io-client' );
var socket = io.connect( 'stream.wikimedia.org/rc' );
socket.on( 'connect', function ()
socket.emit( 'subscribe', 'commons.wikimedia.org' );
);
socket.on( 'change', function ( data )
console.log( data.title );
);
我已经尝试了大约 3 个 .NET 版本的 socket.io 并且无法获得连接。我最接近的是收到“无效端点”错误消息。我认为问题的一部分是我使用的一些库(来自 Nuget 和其他地方),其中不同版本的 socket.io 0.9.x
我希望这里有人可以帮助我找到一种在 C# 中工作的方法。我花了大约4个小时无济于事。谢谢。
【问题讨论】:
如果您正在尝试使用 .NET 实现实时服务器/客户端通信,您可能需要查看SignalR。 【参考方案1】:您可以查看 Socket.IO 的 C# 客户端,例如 SocketIoClientDotNet 或 SocketIO4net,这样您的代码就会像在 JS 中一样简单。
var socket = IO.Socket("http://stream.wikimedia.org/rc");
socket.On(Socket.EVENT_CONNECT, () =>
socket.Emit("hi");
);
socket.On("connect", (data) =>
socket.Emit("subscribe", "commons.wikimedia.org");
);
socket.On("change", (data) =>
Console.WriteLine(data.title);
);
【讨论】:
尝试了这两个客户端。这真的对你有用吗?我永远不会触发“更改”事件。以上是关于在 C# 中使用 Socket.IO的主要内容,如果未能解决你的问题,请参考以下文章