signalR中的第一条任意消息没有messageID?

我写了这个简单的代码 – 当连接时,应该屈服

  • “第一个!”
  • “欢迎”
  • 3条消息(定时器)

这是代码:

int i = 0; protected override Task OnConnected(IRequest request, string connectionId) { //first message Connection.Send(connectionId, "FIRST !"); //first message //last messages Timer _timer = new Timer(RunMe, new {con = connectionId, req = request}, 2000, 1000); //second message return Connection.Send(connectionId, "Welcome!"); //second message } void RunMe(dynamic state) { if (i < 3) { Connection.Send((string) state.con, "Loop " + i); i++; } } 

这里是JS代码(在document.ready块中):

 connection.received(function (data) { $('#messages').append('
  • data received = ' + data + "ConnectionId = " + connection.id + 'MessageId = ' + connection.messageId + '
  • '); });

    我得到了所有回复。

    但如果按f5(刷新) – 这些是典型的响应:

    在此处输入图像描述

    再刷新,

    在此处输入图像描述

    似乎第一条消息永远不会获得messageID

    以后的消息有时会获得messageID, 有时则不会。

    PS

    我心想,也许这是一个初始化速度问题,所以我尝试了这个:

    在此处输入图像描述

    而且,回应是:

    在此处输入图像描述

    • 这里发生了什么 ? 为什么第一条消息没有得到messageID? 我怎么解决这个问题?

    在SignalR 1.1中, 在为一批消息调用所有connection.received处理程序之后设置connection.messageId。

    消息ID实际上仅供SignalR内部使用,但在SignalR 2.0中,connection.messageId将在调用connection.received处理程序之前设置。