在ASP.net MVC信号R中连接客户端服务器

时间:2015-10-17 18:28:26

标签: javascript asp.net asp.net-mvc signalr

这是我的Signal R客户端。 当我运行我的客户端时出现此错误。(0x800a139e - JavaScript运行时错误:SignalR:加载集线器时出错。确保您的集线器引用正确,例如。)

例外来自$ .connection.hub.start

我的服务器应用程序中的HUBS文件夹中有一个ServerHub类,运行正常。

任何人都可以帮帮我.. 感谢

<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="http://localhost:39670/MySignalRServer/signalr/hubs"></script>
 var ChatHubProxy = $.hubConnection("http://localhost:39670/MySignalRServer/signalr/hubs");
        var chat = ChatHubProxy.createHubProxy('ServerHub');

    chat.on("addNewMessageToPage",function (name, message) {
        // Add the message to the page.
          $('#discussion').append('<li><strong>' + htmlEncode(name)
            + '</strong>: ' + htmlEncode(message) + '</li>');
        });
      $.connection.hub.start({jsonp:true}).done(function () {
            $('#sendmessage').click(function () {
                // Call the Send method on the hub.
                chat.server.send($('#displayname').val(),       $('#message').val());
                alert("hiii");
                // Clear text box and reset focus for next comment.
                $('#message').val('').focus();
            });
        });

1 个答案:

答案 0 :(得分:1)

尝试将您的代码更改为:

<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="http://localhost:39670/MySignalRServer/signalr/hubs"></script>

    var chat = $.connection.ServerHub;  //here

    chat.on("addNewMessageToPage", function(name, message) {
        // Add the message to the page.
        $('#discussion').append('<li><strong>' + htmlEncode(name)
            + '</strong>: ' + htmlEncode(message) + '</li>');
    });

    $.connection.hub.start().done(function() {    //here
        $('#sendmessage').click(function() {
            // Call the Send method on the hub.
            chat.server.send($('#displayname').val(), $('#message').val());
            alert("hiii");
            // Clear text box and reset focus for next comment.
            $('#message').val('').focus();
        });
    });

并确保此地址良好 - <script src="http://localhost:39670/MySignalRServer/signalr/hubs"></script>

我总是使用这个 - <script src="/signalr/hubs"></script>

添加HubName属性

[HubName("ServerHub")]
public class ServerHub : Hub
{
    public string Send(string name, string message)
    {
        Clients.All.broadcastMessage(name, message);

        return null;
    }
}

或更改此代码:

 var chat = $.connection.ServerHub;

 var chat = $.connection.serverHub;

演示项目:https://github.com/czerwonkabartosz/SignalRDemo