Получение ответа от сервера на запрос клиента

В настоящее время я использую WebSocket-Sharp. Я могу подключиться к серверу через свое приложение и могу отправить Client.Send(Move.HeadNod); на сервер по нажатию кнопки. Однако, хотя я объявил

private WebSocket client;
const string host="ws://localhost:80";
public Form1()
{
    InitializeComponent();
    client=new WebSocket(host);
    client.connect();
    Client.OnMessage+=client_OnMessage 
}

где:

client_OnMessage(object sender,MessageEventArgs e)
{
    textbox1.text=convert.tostring(e);
    client.send(move.headleft);
}

Я все еще не могу получить ответ от сервера и продолжить отправку команды после этого. редактировать

void Client_OnMessage(object sender,MessageEventArgs e)
{
    if(e.IsText)
    {
        edata=e.data;
        return;
    }
    else if(e.IsBinary)
    {
        Textbox1.Text=Convert.Tostring(e.RawData);
        return;
    }
}

1 ответ

Решение

Это полный код, который работает на моей машине. Установите точку останова в обоих обработчиках событий, чтобы увидеть, что происходит. Возможно, ваш сервер веб-сокетов выдает исключение, и вы просто не знаете этого:

public partial class Form1 : Form
{
    private readonly WebSocket _client;

    public Form1()
    {
        InitializeComponent();
        _client = new WebSocket("ws://echo.websocket.org");
        _client.OnMessage += Ws_OnMessage;
        _client.OnError += Ws_OnError;
        _client.Connect();
    }

    private void Ws_OnError(object sender, ErrorEventArgs e)
    {
    }

    private void Ws_OnMessage(object sender, MessageEventArgs e)
    {
        if (e.IsText)
        {           
            Invoke(new MethodInvoker(delegate () {
                textBox1.Text = e.Data;
            }));
        }
        else if (e.IsBinary)
        {
            Invoke(new MethodInvoker(delegate () {
                textBox1.Text = Convert.ToString(e.RawData);
            }));               

        }
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
        _client.Send("Hi");
    }
}
Другие вопросы по тегам