【问题标题】:SignalR Hub not connectingSignalR 集线器未连接
【发布时间】:2016-07-07 16:25:18
【问题描述】:

我正在尝试创建 SignalR 应用程序,但无法连接到我的集线器。

这是我的以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>SignalR Simple Chat</title>

</head>
<body>
    <button id="display">Display</button>
    <button id="send">Send</button>
    <input id="Name" type="Text">
    <input id="Content" type="Text">
    <!--Script references. -->
    <!--Reference the jQuery library. -->
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <!--Reference the SignalR library. -->
    <script src="/Scripts/jquery.signalR-2.0.0.js"></script>
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="/signalr/hubs"></script>
    <!--Add script to update the page and send messages.-->
    <script type="text/javascript">


        $(function () {
            messageArr = [];

            var chat = $.connection.chatHub;
            chat.client.broadcastMessage = function (id, name, content) {
                var message = { ID: id, Name: name, Content: content };
                messageArr.push(message);
            };

            $('#display').click(function() {
                window.alert(messageArr);
            });

            $.connection.hub.start().done(function () {
                $('#send').click(function () {
                    window.alert("Sent");
                    chat.server.send(0, document.getElementById("Name").value, document.getElementById("Content"));

                });
            });
        });

    </script>
</body>
</html>

C# 集线器:

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

namespace WebAPI
{
    public class ChatHub : Hub
    {
        public void Send(int id, String name, String content)
        {
            Clients.All.broadcastMessage(id, name, content);
        }
    }
}

Owin 启动类:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebAPI.Startup))]

namespace WebAPI
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
         }
     }
}

当我通过 Visual Studio 2013 运行它时,我单击了发送按钮,但没有出现警报告诉我我按下了该按钮。另外,当我稍后单击显示按钮时, messageArr 数组仍然为空。我可以进行哪些更改才能使其真正发挥作用?

【问题讨论】:

    标签: javascript c# html signalr


    【解决方案1】:

    好吧,我不确定如何,但我似乎已经修复了我的代码

    <!DOCTYPE html>
    <html>
    <head>
    <title>SignalR Simple Chat</title>
    
    </head>
    <body>
    <button id="display"onclick="displayMessage()">Display</button>
    <button id="send">Send</button>
    <input id="Name" type="Text">
    <input id="Content" type="Text">
    <!--Script references. -->
    <!--Reference the jQuery library. -->
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <!--Reference the SignalR library. -->
    <script src="/Scripts/jquery.signalR-2.0.0.js"></script>
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="/signalr/hubs"></script>
    <!--Add script to update the page and send messages.-->
    <script type="text/javascript">
    
        messageArr = [];
        $(function () {
            var chat = $.connection.chatHub;
            chat.client.broadcastMessage = function (id, name, content) {
                var message = { ID: id, Name: name, Content: content };
                messageArr.push(message);
            };
    
    
            $.connection.hub.start().done(function () {
                $('#send').click(function () {
                    chat.server.send(0, document.getElementById("Name").value, document.getElementById("Content").value);
    
                });
            });
        });
        function displayMessage() {
            window.alert(messageArr);
        }
    
    </script>
    

    如果有人可以向我解释这如何解决我的问题,那将很有帮助。

    【讨论】: