这种情况是 ASP.NET MVC4 项目中 SignalR(来自 NuGet 的 v1.1.2)持久连接上的单个 javascript 客户端。连接后,我会连续从客户端向服务器发送多条消息。在服务器上,我的 OnReceived 覆盖函数同时从多个线程被调用,这导致消息被乱序接收,因为它变成了看哪一个首先击中我的锁的竞赛。从服务器发送到客户端的消息似乎是按顺序传递的,尽管这可能只是运气。
对于单个客户,是否对任一方向的消息顺序有任何期望?是否有任何我遗漏的文档列出了持久连接所做的保证?
我是否需要做任何特别的事情来确保服务器到客户端的消息也保持有序?我的大部分发送都是从持久连接外部异步发送的,所以我目前只是调用 IConnection.Send 并忽略返回的任务。