c# Резьба сокета - PullRequest
       4

c# Резьба сокета

0 голосов
/ 03 марта 2020

Попытка пропустить сокет через c# winform. Я не знаю, правильно ли работает этот код. Если нет, я хочу избавиться от розеток с нитками. Обратитесь за помощью.

Есть сообщение, что клиент и сервер связаны, но они не получают данные друг от друга. Я понятия не имею, в чем проблема.

private void Login_box_Click(object sender, EventArgs e)
        {
            string email = textBox1.Text;
            string pw = textBox2.Text;

            Thread thread = new Thread(new ThreadStart(delegate ()
            {
                this.Invoke(new Action(() => socketLogin(email, pw)));
                Thread.Sleep(1000);
            }));

            thread.Start();
}

private void socketLogin(string email, string pw)
            {
                var loginjson = new JObject();

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


                var socket = IO.Socket("http://localhost:3000/login.html");
                socket.On(Socket.EVENT_CONNECT, (data) =>
                {
                    socket.Emit("socketlogin", loginjson.ToString());  
                });

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

                });

            }

сервер node.js

io.on('connection', function(socket) {
    console.log('connection');
    socket.on('socketlogin', function(data) {  

        var testLogin = { 'Login': "success" };

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

1 Ответ

0 голосов
/ 03 марта 2020

Я бы сделал что-то вроде следующего:

private void Login_box_Click(object sender, EventArgs e)
{
    string email = textBox1.Text;
    string pw = textBox2.Text;

    ThreadPool.QueueUserWorkItem(socketLogin, new Tuple<string, string>(email, pw));
}

private void socketLogin(object obj)
{
    string email = ((Tuple<string, string>)obj).Item1;
    string pw = ((Tuple<string, string>)obj).Item2;

    var loginjson = new JObject();

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


    var socket = IO.Socket("http://localhost:3000/login.html");
    socket.On(Socket.EVENT_CONNECT, (data) =>
    {
        socket.Emit("socketlogin", loginjson.ToString());  
    });

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

    });

}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...