0

我很难弄清楚这一点。

我需要使用 WebSocketSharp 和客户端编写一个 API 服务器。我通过交换消息获得了成功的连接,但是,我想不出一种方法来正确实现这样的行为:

1) Client sends a message with request to the server and waits for a response
2) Server handles the request and response with another message
3) Client receives the response and handles the function

第 2) 点已经在服务器端完成,但我很难实现第 1 点和第 3 点,原因如下:当客户端将消息发送到服务器时,它不会等待响应,而是立即跳到下一个代码执行。

我设法实现了一种半功能的方式,它做得很糟糕,并且可能在很多方面出错(超时、延迟、要处理的多条消息等),例如,这就是我处理服务器登录的方式:

Class Connection {

    private bool auth = false;
    public string user, pwd;
    WebSocket ws = new WebSocket("ws://localhost:1111");

    public void Start() {
        ws.OnMessage += Ws_OnMessage;
        ws.Connect();
    }
    public void Ws_OnMessage(object sender, MessageEventArgs e) {
        string[] decode = e.Data.Split(','); //splitting the server response
        if (decode[0].Contains("auth") && decode[1].Contains("accepted")) { auth = true; } //handle request
    }
    public bool login()
    {
        ws.Send($"auth,{user},{pwd}"); //client send request to login to server
        Thread.Sleep(3000); //wait response from server handled over Ws_onMessage
        if (auth) { return true; } else { return false; } //check the response based on bool
    }
}

这在“完美”的条件下是可行的,但我们都知道没有什么是完美的,这将遭受许多失败。

我的问题,我如何正确地实现这种行为?有正确的方法吗?

4

0 回答 0