SignalR如何保留从服务器到客户端的消息顺序

Cod*_*men 7 c# model-view-controller signalr

我有一个问题,当我从服务器向客户端发送消息时,他们没有按原始顺序到达客户端.我在这里有一个测试功能:

public async Task Hello(string group)
    {
        await Groups.Add(Context.ConnectionId, group);
        await Clients.Group("grp1").Hello("grp1");
        await Clients.Group("grp2").Hello("grp2");
        await Clients.All.Hello("all");
    }
Run Code Online (Sandbox Code Playgroud)

在客户端:

var chanceHub = $.connection.chanceHub;
chanceHub.client.Hello = function (message) {
    alert(message);
}
$.connection.hub.start().done(function () {
    chanceHub.server.hello("grp1");
});
Run Code Online (Sandbox Code Playgroud)

我希望按此顺序获得2个警报:"grp1"然后"all"但我总是首先得到消息"all".有什么方法可以解决这个问题吗?

Esp*_*rud 5

对于这个问题,这是一个未解决的问题#3310.该问题还描述了一个解决方法问题#3310

  • 这个问题建议添加"等待"以使事情有效.OPs代码已经包含`await`. (2认同)