【问题标题】:First arbitrary messages in signalR has no messageID?signalR 中的第一个任意消息没有 messageID?
【发布时间】:2013-05-21 03:09:46
【问题描述】:

我写了这个简单的代码——当连接时,应该产生

  • “第一!”
  • “欢迎”
  • 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('<li><b>data received = </b>' + data +
                                  "<b>ConnectionId =</b> " + connection.id + 
                                  '<b>MessageId = </b>' + connection.messageId + '</li>');
    });

我确实收到了所有回复。

但如果我按 f5(refresh) - 这些是典型的响应:

再次刷新,

似乎第一条消息从不得到messageID

以后的消息有时会得到 messageID 而有时不会。

ps

我心想,可能是初始化速度的问题,所以我试了一下:

再一次,回复是:

  • 这是怎么回事?为什么第一条消息没有得到 messageID ?我该如何解决?

【问题讨论】:

  • 你的 SignalR 版本是多少?

标签: c# asp.net signalr


【解决方案1】:

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

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

【讨论】:

  • 还没有。预售将在未来几个月内推出。同样,这不会改变 SignalR 的功能,并且消息 ID 仅意味着 SignalR 在内部使用。
  • @qub1n Yes。在 SignalR 2.* 中调用 connection.received 处理程序之前设置 connection.messageId。你打算用 messageId 做什么?
  • 我用它来聊天。我已经下载了一些 signalR 0.5 演示。我只是想知道是否应该将其重写为 signalR 2.0。最后它现在也适用于我:-) 谢谢。
  • 只要知道,如果您在收到消息时检查connection.messageId,它可能看起来好像一行中的多条消息具有相同的messageId。这是 SignalR 批处理消息的方式的结果。 SignalR 客户端只需要每批中最后一条消息的 messageId,这就是服务器发送的全部内容。这就是我在回答中说消息 ID 供 SignalR 内部使用的原因之一。
猜你喜欢
  • 2020-02-03
  • 2021-11-04
  • 2014-11-13
  • 2019-03-26
  • 1970-01-01
  • 2021-09-29
  • 2014-10-23
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多