前言
在用WS做一些互动的逻辑时,我们一般会在下面的方法中做业务逻辑
1 | private void NewMessageReceived(WebSocketSession session, string message) |
但是消息的接收是多线程的,那么会出现这么一个情况,如果消息的处理必须有先后的话,处理的时候就会出问题,比如一个是上线信息,一个是下线信息,一个是给上线用户发的信息,
如果我们想要的执行的顺序是处理上线信息
=>给上线用户发消息
=>处理用户下线信息
,
但是可能执行时处理上线信息
=>处理用户下线信息
=>给上线用户发消息
,这样就没法给该用户发消息了,所以我们要把用户上下线和其他消息放在一个队列中,让用户上下线信息串行执行,而其他信息并行执行
先定义实体类
1 | using SuperWebSocket; |
定义队列
1 | //接收的消息队列 |
消息处理
1 | private void NewMessageReceived(WebSocketSession session, string message) |
这样就可以保证处理消息的先后了。