c# SocketIoClientDotNet, node js socket.IO

Posted

技术标签:

【中文标题】c# SocketIoClientDotNet, node js socket.IO【英文标题】: 【发布时间】:2020-06-11 00:25:36 【问题描述】:

c# winform 尝试通过套接字发送 node.js 套接字。 客户端连接到服务器,但是socket.emit 值和socket.on 值没有正常通信。 我想找到解决办法。

我想把这个客户端的名字作为json类型的数据发送到服务器,从服务器接收json类型的数据,读取它,然后将数据发送回json。

socket.emit和socket.on的数据不正常,所以代码已经被删除了。

c#代码

private void socketLogin(string email, string pw)

    var socket = IO.Socket("http://localhost:3000/login.html");
    socket.On(Socket.EVENT_CONNECT, () =>
    

    );

    var loginjson = new JObject();


    loginjson.Add("email", email);
    loginjson.Add("password", pw);

    socket.Emit("socketlogin", loginjson.ToString());  

    socket.On("login", (data) =>  
        MessageBox.Show(data.ToString());
    );

node.js 代码

    var server = require('http').Server(app);
    var io = require('socket.io')(server);

    io.on('connection', function(socket) 
        console.log('connection');
        socket.on('socketlogin', function(data)   
            var testLogin =  'Login': "success" ;

            socket.emit('login', data);
        );

      );

    server.listen(app.get('3000'))

【问题讨论】:

【参考方案1】:

在您的 C# 中,您在函数中创建套接字,但在函数结束时,套接字被丢弃,因为它只是一个局部变量。

有很多方法可以解决这个问题,但基本上你想要做的是使用一个线程来处理套接字通信,然后将事情分派回你的 UI 线程。

【讨论】:

感谢您的回答。但是我不知道怎么用这个...

以上是关于c# SocketIoClientDotNet, node js socket.IO的主要内容,如果未能解决你的问题,请参考以下文章

无法从Win Forms C#app连接到远程Node.js Socket.IO服务器

C#入门系列——第一个C#程序

译《C# 小技巧 -- 编写更优雅的 C#》原书名《C# Tips -- Write Better C#》

C#进阶C# 泛型

C#进阶C# 匿名方法

C#进阶C# 多线程