从C#表单发送数据到节点服务器socket.io

时间:2018-08-18 13:51:33

标签: c# node.js socket.io

我正在尝试从C#格式发送数据,该数据已存储在名为ClientMsg的变量中。我正在使用SocketIoClientDotNet与节点服务器通信。我的连接设置很好,但是无法将数据从表单发送到服务器。

有人可以告诉我该怎么做,因为我在网上找不到任何东西?

Code Code Node

更新(添加的代码):

private void socketManager()
    {
        var server = IO.Socket("http://localhost");
        server.On(Socket.EVENT_CONNECT, () =>
        {
            UpdateStatus("Connected");
        });
        server.On(Socket.EVENT_DISCONNECT, () =>
        {
            UpdateStatus("disconnected");
        });
        server.Emit("admin", ClientMsg);
    }

按钮:

private void btnSend_Click(object sender, EventArgs e)
    {
        String ClientMsg = txtSend.Text;
        if (ClientMsg.Length == 0)
        {
            txtSend.Clear();
        }
        else
        {
            txtSend.Clear();
            lstMsgs.Items.Add("You:" + " " + ClientMsg);
        }
    }

1 个答案:

答案 0 :(得分:1)

代码的问题在于,您尝试使用ClientMsg变量(该变量最初为null)在连接后直接发送消息。
即使您在文本框中输入内容,该内容也将保持为空,因为在按钮单击事件中,您声明的是本地的新ClientMsg,因此您将无法使用全局的内容。

这是应该的样子:

// Save your connection globally so that you can
// access it in your button clicks etc...
Socket client;

public Form1()
{
    InitializeComponent();
    InitializeClient();
}

private void InitializeClient()
{
    client = IO.Socket("http://localhost");
    client.On(Socket.EVENT_CONNECT, () =>
    {
        UpdateStatus("Connected");
    });
    client.On(Socket.EVENT_DISCONNECT, () =>
    {
        UpdateStatus("disconnected");
    });
}

private void btnSend_Click(object sender, EventArgs e)
{
    String clientMsg = txtSend.Text;
    if (ClientMsg.Length == 0)
    {
        // No need to clear, its already empty
        return;
    }
    else
    {
        // Send the message here
        client.Emit("admin", clientMsg);
        lstMsgs.Items.Add("You:" + " " + clientMsg);
        txtSend.Clear();
    }
}