signalR javascript运行时对象不支持属性

时间:2016-01-27 15:06:39

标签: java signalr

我是一名C#算法程序员,试图集成SignalR,以便我可以在长时间运行的代码上发送进度消息。

以下简单原型失败

helloConnection.sayHelloToAll("Hello all!");

JavaScript错误"对象不支持属性......"虽然右键单击helloConnection。清楚地显示了该方法。我找到的此消息的类似实例都不适用于我的示例。

请有人帮忙:我花了几周的时间试图让这项工作成功。这是客户。它位于我的母版页面中,因为我的消息将放在标题上。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
    <link href="Styles/SiteBlue.css" rel="stylesheet" e="text/css" />
    <title> Seeker-Home Page</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">      </script>
    <script src="Scripts/json2.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.js"></script>
    <script src="SignalR/Hubs"></script>

    <script type="text/javascript">
        $(); //document ready
        var helloConnection = $.connection.seekerHub;

        helloConnection.client.sayHelloToMe = function (message) {
            alert(message);
        };

        $.connection.hub.start().done(function () {
            helloConnection.sayHelloToAll("Hello all!");
        });
        function displayPopup() {
            alert("Hello, world.");
        };
    </script>

这是集线器

using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;

namespace SignalR
{
      public class SeekerHub : Hub
      {
            public void SayHelloToAll(string message)
            {
                  Clients.All.sayHelloToMe(message);
                  var callingClient = Context.ConnectionId;
            }
      }
}

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

问题是您尝试从客户端调用客户端方法sayHelloToMe

替换这行代码:

helloConnection.client.sayHelloToMe = function (message) {
    alert(message);
};

用这个:

helloConnection.on('sayHelloToMe ', function(message) {
    alert(message);
});

这样你实际上在客户端有一个处理程序,听取服务器端的触发器为sayHelloToMe

答案 1 :(得分:0)

您可以在集线器中覆盖OnConnected以查看您的客户端是否连接到服务器

public override Task OnConnected() 
{
}

https://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.hub.onconnected(v=vs.118).aspx