类库中的 SignalR 集线器类

Posted

技术标签:

【中文标题】类库中的 SignalR 集线器类【英文标题】:SignalR hubclass in classlibrary 【发布时间】:2014-01-14 18:25:16 【问题描述】:

我在类库中有一个信号器中心类

当我在我的 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();
);

【问题讨论】:

您的问题并不清楚什么不起作用;你应该添加服务器端代码并​​解释你期望发生的事情 【参考方案1】:

您需要一个事件来触发 Hub 类中的方法。见下例:

类库中的NotificationHub

public class NotificationHub : Hub

    public void Send(string message)
    
        Clients.All.newMessage(message);
    

网络应用程序

<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>

注意

因为你的hubclass在类库中,你需要在里面安装Microsoft ASP.NET SignalR包。您还需要在 web 应用程序中安装它。然后将 hubclass 引用添加到 webapplication。在 Startup 类中添加 app.MapSignalR(),如下所示:

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

【讨论】:

我有同样的问题我不明白你的意思 ConfigureAuth(app); ??为什么将其声明为部分?? 启动类将在类库或Web应用程序中? @bilal,Startup 类是您为应用程序管道指定组件的地方,因此它应该在 Web 应用程序中。

以上是关于类库中的 SignalR 集线器类的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据传递到 Signalr 集线器类

带有 SignalR 集线器的 ASP.NET Core 中的范围服务

如何在 hubpipleline 之外使用 SignalR 集线器实例

ASP.NET Core SignalR:集线器Hubs

SignalR 客户端集线器代理未定义

将消息从 SSIS (2012) 包推送到 ASP.NET Web 应用程序中的 SignalR 集线器——最好的方法是啥?