具有 Socket.IO 后端的 XSocket 客户端?

XSocket client with Socket.IO backend?

我想知道是否可以使用 XSocket as a client and Socket.IO 作为服务器端。

我很确定它不会起作用,但后来我读了 this post,这实际上与我想做的相反。这似乎有效。 我想主要的区别是我没有编写服务器,我只是想使用一个已经存在的服务器。

这是我目前的情况:

    public static void Main (string[] args)
    {
        try{
            const string ClientID = "--MyClientID--";
            const string AccessToken = "--MyAccessToken--";

            XSocketClient client = new XSocketClient ("https://streamtip.com", "https://streamtip.com", "StreamTipIO");

            client.QueryString.Add("client_id", Uri.EscapeDataString(ClientID));
            client.QueryString.Add("access_token",Uri.EscapeDataString(AccessToken));

            client.OnError += 
                (object sender, XSockets.Client40.Common.Event.Arguments.OnErrorArgs e) => Console.WriteLine (e);
            client.OnConnected += 
                (object sender, EventArgs e) => Console.WriteLine ("Connected");
            client.OnDisconnected += 
                (object sender, EventArgs e) =>  Console.WriteLine ("Disconnected");
            client.OnPing += 
                (object sender, XSockets.Client40.Model.Message e) => Console.WriteLine (e);
            client.OnPong += 
                (object sender, XSockets.Client40.Model.Message e) => Console.WriteLine (e);


            //client.Controller("test").On("authenticated", () => Console.WriteLine("test"));
            client.Controller("StreamTipIO").On<string>("authenticated", Console.WriteLine);

            client.Open();
        }
        catch(Exception e)
        {
            Console.WriteLine (e);
        }

        Console.ReadLine ();
    }

奇怪的是它似乎连接上了,但我没有得到任何数据....我认为这与控制器有关,事实上我只是弥补了,因为我不确定当您尝试使用 Socket.IO 后端时,您会为控制器命名...

--输出

Disconnected

Connected

奇怪的是断开连接首先触发....不知道那是什么

旁注:

我希望能够在 C# 中连接到 Socket.IO 服务器,但它似乎真的很随意。我已经尝试了一些 C# Socket.Io 端口,SocketIoClientDotNet actually works perfectly, until you try to run it in Mono then it has this error

您可以使用 TCP 将任何东西连接到 XSockets.NET 服务器,因为 XSockets 允许跨协议通信。在明文中,这意味着 XSockets 不关心每个客户端的 "transport" 或 "language"。服务器也不关心消息格式,因为每个协议都负责将消息转换为 in/out

您不能将 XSockets 客户端与 socket.io 服务器一起使用。他们可能会连接,但消息的格式不会直接适合 socket.io.

由于您的任务似乎是将 C#/Mono 与 socket.io 一起使用,只需使用 XSockets C# 客户端(或 C# 中的任何其他 websocket 客户端)并为 socket.io 重建它。 XSockets 客户端在 Mono 上运行并且是开源的 on github

我的猜测是,其他客户端将更容易移植,因为 XSockets 客户端非常特定于 XSockets,并且可能比 C# 中的简单 websocket 客户端更复杂