简体   繁体   English

ClassR库中的SignalR集线器类

[英]SignalR hubclass in classlibrary

I have a signalr hubclass in a classlibrary 我在一个图书馆里有一个信号中心中心类

and when i use that hubclass in my webapplication referencing that class library with below javascript code, it does not work, 当我在Web应用程序中使用该Hubclass并使用下面的javascript代码引用该类库时,它将无法正常工作,

$(function () {

    var chat = $.connection.notificationHub;

    chat.client.newMessage = function (message) {
        alert(message);

        $('#messages').append('<li><strong>' +  message + '</strong>: </li>');
    };
    $.connection.hub.start();
});

You need an event to trigger your method in Hub class. 您需要一个事件来触发Hub类中的方法。 See below example: 请参见以下示例:

NotificationHub in the class library 类库中的NotificationHub

public class NotificationHub : Hub
{
    public void Send(string message)
    {
        Clients.All.newMessage(message);
    }
}

Web application Web应用程序

<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" />
<ul id="messages"></ul>

   <script src="~/Scripts/jquery-1.10.2.min.js"></script>
   <script src="~/Scripts/jquery.signalR-2.0.1.min.js"></script>
   <script src="signalr/hubs"></script>

    <script>
        $(function () {
            var chat = $.connection.notificationHub;
            chat.client.newMessage = function (data) {
                //alert(data);
                $('#messages').append('<li><strong>' + data + '</strong>: </li>');
            };
            $('#message').focus();
            $.connection.hub.start().done(function () {
                console.log("Connected");
                $('#sendmessage').click(function () {
                    chat.server.send($('#message').val());
                    $('#message').val('').focus();
                });
            });
        });
    </script>

Note 注意

Because you the hubclass is in the class library, you need to install Microsoft ASP.NET SignalR package in it. 由于hubclass在类库中,因此需要在其中安装Microsoft ASP.NET SignalR软件包。 You also need to install it in the webapplication. 您还需要将其安装在Web应用程序中。 Then add hubclass reference to webapplication. 然后将hubclass引用添加到Web应用程序。 Add app.MapSignalR() in your Startup class, like below: 在您的Startup类中添加app.MapSignalR() ,如下所示:

public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
            app.MapSignalR();
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM