首页 > 解决方案 > 防止来自服务器的响应覆盖旧响应

问题描述

目前我有一个有效的 WebSocket-Sharp 客户端,允许用户在 button_click 事件上发送请求。我还在富文本框(NTF 或 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

标签: c#websocketwebsocket-sharp

解决方案


您需要附加现有的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)); 

推荐阅读