我是套接字的新手,我一直在尝试将 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.FileNotFoundExceptionQuobject.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/

10-12 16:36