防止来自服务器的响应覆盖旧的响应

时间:2018-07-19 08:19:13

标签: c# websocket websocket-sharp

当前,我有一个正在运行的WebSocket-Sharp客户端,该客户端允许用户在button_click事件上发送请求。我还通过RTF或RSP格式的文本框从服务器收到了响应。

    Private void InstantiateWebSocket()
{
client=new WebSocket("ws://localhost:80");
client.OnMessage+=new EventHandler<MessageEventArgs>(client_OnMessage);
client.ConnectAsync();
}

和OnMessage

private void client_OnMessage(object sender,MessageEventArgs e)
{
if(e.IsText)
{
Invoke(new MethodInvoker(delegate() richTextBox1.text=e.Data;}));
return;
}
}

我当前面临的问题是,只要客户端收到响应,它就会覆盖较早的响应。我希望将较新的回复写在较旧的回复下方

    older response..
    new line
    newer response

1 个答案:

答案 0 :(得分:1)

您需要附加现有的richTextBox1文本:

richTextBox1.Text+=e.Data;

注意:如果以后要使用/处理这些响应,则将它们与时间戳一起存储在某个集合中。

添加一个私有字段,即

private ConcurrentBag<KeyValuePair<DateTime, string>> _messages = new ConcurrentBag<KeyValuePair<DateTime, string>>();

然后在您的消息接收代码内执行此操作:

_messages.Add(new KeyValuePair<DateTime, string>(DateTime.Now, e.Data));