我是套接字的新手,我一直在尝试将 Socket.io 1.0 客户端集成到我的 C# 程序中,但没有取得多大成功。
我正在使用 SocketIoClientDotNet 来完成这项工作,这是我发现的唯一支持 socket.io 1.0 的选项(例如,不幸的是,SocketIO4Net.Client 只支持 0.9)。该程序最初针对 .NET framework 4.0,我必须更改它以与 SocketIoClientDotNet 兼容,SocketIoClientDotNet 显然支持 .Net 3.5 和 4.5。
我的代码片段:
using SteamKit2;
using SteamTrade;
using SteamTrade.TradeWebAPI;
using SteamTrade.TradeOffer;
using System;
using System.IO;
using System.Net;
using System.Timers;
using System.Threading;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Linq;
using System.Diagnostics;
using System.Web.Script.Serialization;
using Newtonsoft.Json;
using MySql.Data.MySqlClient;
using Quobject.SocketIoClientDotNet.Client;
using Quobject.EngineIoClientDotNet.Client.Transports;
using Quobject.EngineIoClientDotNet.ComponentEmitter;
using Quobject.EngineIoClientDotNet.Modules;
using Quobject.EngineIoClientDotNet.Parser;
using Socket = Quobject.SocketIoClientDotNet.Client.Socket;
namespace Foo
{
public class Bar
{
public override void fooBar()
{
// just to test, didn't go any further because of errors
var socket = IO.Socket("http://localhost");
socket.On(Socket.EVENT_CONNECT, () =>
{
socket.Emit("hi");
socket.On("hi", (data) =>
{
Console.WriteLine(data);
socket.Disconnect();
});
});
// more code...
}
// more code...
}
}
这就是问题开始的地方:
ojit_a 添加对
System.Threading.Tasks.NET35
的引用。»» 以 .Net Framework 4.0 或 4.5 为目标而不删除引用会导致错误:
Error 17 The type 'System.Threading.Tasks.Task<TResult>' exists in both 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll' and 'c:\MyApp\trunk\packages\System.Threading.Tasks.Unofficial.3.1\lib\net35\System.Threading.Tasks.NET35.dll'
»» 将目标框架更改为 3.5 会导致其他依赖项与
Error 396 The type or namespace name 'FooBar' could not be found (are you missing a using directive or an assembly reference?)
中断,所以我也做不到。
»» 删除对
System.Threading.Tasks.NET35
的引用会导致 System.IO.FileNotFoundException
的 Quobject.SocketIoClientDotNet.Client.IO
异常基本上我被困在这里并且需要指导。任何关于如何让 Socket.io 1.0 在这里工作的帮助和建议将不胜感激。谢谢!
最佳答案
显然,这个问题是因为 SocketIoClientDotNet 是在面向 .Net 4.0 时安装的,它错误地需要 System.Threading.Tasks.NET35。针对 .Net 4.5 然后重新安装 SocketIoClientDotNet 解决了这个问题。
关于c# - 将 Socket.io 1.0 客户端与 c# 程序集成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27678628/