好好上班懂吗 2022-04-03 05:44 采纳率: 66.7%
浏览 327
已结题

c# 客户端接受websokcet服务器的消息并作出应答的逻辑问题

我使用websocket-sharp 连接了socket服务器,并将来回应答的逻辑代码都写在了OnMessage里面,如图:

img

在我标记的地方,正常情况下服务器会返回消息A,我判断是消息A,就去做处理。但是现在有一种特殊情况,服务器除了回复我消息A,还会紧跟着发过来一条消息B,这种情况我需要做另一种处理。但是我目前的逻辑好像处理不了这种情况。socket消息如下图:
第一种情况

img

第二种情况

img

现在就是当消息A进到这里的时候,我不能直接就去处理,需要判断是否后面还有消息B,我不知道如何实现这个逻辑。因为两条消息不是一起过来的,如果合并为一条消息过来就很好办。但是现在消息A和B会依次进到这里,A过来的时候程序不能往下走,要等待 判断会不会有B第二次进到这里。我的想法是当消息A进来的时候,让程序等待,比如50ms,如果有消息B进来就是第二种情况,否则就是第一种情况。或者将消息A以及后面50ms的消息都先记录下来,后面一起判断,含有B就是第二种情况,不含就是第一种。但是我都不知道该如何实现。

  • 写回答

16条回答 默认 最新

  • 急速光粒 2022-04-03 18:03
    关注

    onmessage中增加对A和A+B的处理逻辑,如果是A,则看前一个A消息记录是否处理,如果未处理立刻处理并清空前一个A记录,本次A则先不处理但是存储下来(作为下一次消息的前一个A消息记录),并启动一个定时器(如100ms),在定时器中进行消息A的处理并清除A消息;如果是B,则将之前消息A取出与B形成A+B进行处理,并将A消息存储清空。这样就可以实现对消息的A+B的即时处理和独立消息A的延后处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(15条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 工业数据采集技术+存储架构推荐
  • ¥20 树莓派4b使用Camera Module 3时出现the system should be configured for the legacy camera stack问题
  • ¥200 GitHub开源程序配置在VScode调试
  • ¥15 爬虫保存的scv文件0kb
  • ¥20 如何实现基于强化学习的带电作业机械臂的运动规划与控制
  • ¥15 使用wpf制作打砖块游戏时遇到的一个Bug
  • ¥15 qrCodeDetector.detectAndDecode
  • ¥15 海洋可控源和大地电磁一维联合反演
  • ¥15 MFC多文档程序获取视图指针问题
  • ¥15 如何把matlabR2023遗传算法工具箱里面的各类选项对应的代码调出来呢?