Как подключить SocketIO к клиенту C# - PullRequest
1 голос
/ 14 января 2020

C# Я разрабатываю плагин MIP для Milestone VMS. У меня проблема при подключении к SocketIO с C#. Я пытался подключиться к SocketIO с помощью TcpClient, Socket, ClientWebSocket


    TcpClient tcpClient = new TcpClient();

    tcpClient.Connect("127.0.0.1, 3001);

Я также пытался подключиться к ClientWebSocket, но опять-таки никакой реакции на стороне сервера.

    using (var client = new ClientWebSocket())
                {
                    // await client.ConnectAsync(new Uri("ws://192.168.100.25:8090/?token="),timeout.Token);
                    await client.ConnectAsync(new Uri(LOCAL_PATH), timeout.Token);
                    var buffer = new ArraySegment<byte>(new byte[1000]);

                    var result = await client.ReceiveAsync(buffer, timeout.Token);
                }

Может кто-нибудь предоставить некоторые библиотеки, которые могут служить клиентами для SocketIO?

URI имеет такой синтаксис: http://127.0.0.1: 3001? token = xxx

1 Ответ

0 голосов
/ 14 января 2020

Вот проверенный код, который я использую, предположим, что ваш сервер работает, вам нужно передать IP или HostName и номер порта, а затем получить полезную нагрузку или сообщение, которое вы хотите отправить:

private bool ConnectAndSendMessage(String server, Int32 port, String message)
    {
        try
        {
            // Create a TcpClient.
            TcpClient client = new TcpClient(server, port);

            // Translate the passed message into ASCII and store it as a Byte array.
            Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

            // Get a client stream for reading and writing.
            NetworkStream stream = client.GetStream(); 

            // Send the message to the connected TcpServer. 
            stream.Write(data, 0, data.Length);


            // Buffer to store the response bytes receiver from the running server.
            data = new Byte[256];

            // String to store the response ASCII representation.
            String responseData = String.Empty;

            // Read the first batch of the TcpServer response bytes.
            Int32 bytes = stream.Read(data, 0, data.Length);
            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

            // Close everything.
            stream.Close();
            client.Close(); return true;
        }
        catch (ArgumentNullException e)
        {
            _txtStyling.WriteCustomLine(string.Format("ArgumentNullException: {0} \n\n", e.Message), 14, false, false, Brushes.Red); return false;
        }
        catch (SocketException e)
        {
            _txtStyling.WriteCustomLine(string.Format("SocketException: {0} \n\n", e.Message), 14, false, false, Brushes.Red); return false;
        }
    }
...