【问题标题】:Simple example of signalR not workingsignalR 不工作的简单示例
【发布时间】:2012-07-11 04:03:53
【问题描述】:

无法让 SignalR 在我的机器上工作(使用 IE9)。在输入一些文本并单击提交时,文本未按预期列出。另外,我希望该列表会从多个浏览器实例中更新,但它不会发生。没有错误。有人可以帮忙吗?

C#

namespace TestSignalR.Hubs
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for ChatHub.
    /// </summary>
    public class ChatHub : SignalR.Hubs.Hub
    {
        public void TestMessage(string message)
        {
            Clients.writeMessage(message);
        }
    }
}

ASPX

<input type="text" name="txtInput" id="txtInput" />
<button id="btnSubmit">Submit</button>

<ul id="messages">
</ul>
<script type="text/javascript" src="SignalR/Hubs"></script>
<script type="text/javascript">
    $(document).ready(function (message) {
        var chat = $.connection.chatHub;

        chat.writeMessage = function (message) {
            $("#messages").append("<li>" + message + "</li>");
        };

        $("#btnSubmit").click(function () {
            var text = $("#txtInput").val();
            chat.testMessage(text);
        });

        $.connection.hub.start();
    });

</script>

母版页有 JQuery 和 SignalR 文件的参考:-

<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-0.5.2.min.js" type="text/javascript"></script>

【问题讨论】:

  • 代码没有问题,可以在我的机器上运行。只有 jquery 1.7.2 不同。你检查过IE9中是否找到了所有的js脚本吗?
  • “jquery-1.6.4.min.js”随 Nuget SignalR 一起提供。
  • @Wim,“如果在 IE9 中找到所有 js 脚本”是什么意思?
  • 在IE9开发者工具脚本中,你能看到所有的javascript文件吗?

标签: signalr


【解决方案1】:

今天我正在处理同样的问题。

首先,您需要为您的 Hub 添加一个带有名称的属性,如下所示:

[HubName("chathub")]
public class ChatHub : SignalR.Hubs.Hub

接下来要做的是在 javascript 中更改调用的顺序。您需要在旁边进行连接以实例化集线器。 所以,代码如下:

$(document).ready(function (message) {
   var chat = $.connection.chatHub;

   $.connection.hub.start();

   chat.writeMessage = function (message) {
      $("#messages").append("<li>" + message + "</li>");
   };

    $("#btnSubmit").click(function () {
        var text = $("#txtInput").val();
        chat.testMessage(text);
    });        
 });

我希望它对你有用。

【讨论】:

  • 不应该是chat.client.writeMessagechat.server.testMessage
【解决方案2】:

请同时安装 Nuget 的 SignalR 1.0 版本。从您的脚本参考来看,您使用的是 0.5.2,而在撰写本文时最新支持的版本是 1.0。请从 Nuget 下载 Microsoft.AspNet.SignalR

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多