c# - 类库中的 SignalR 中心类

标签 c# javascript signalr signalr-hub signalr.client

我在类库中有一个 signalr hubclass

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

最佳答案

您需要一个事件来触发 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();
        }
    }

关于c# - 类库中的 SignalR 中心类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795982/

相关文章:

c# - 从数据集中的数据表中删除一行

c# - 在 C# 中的两个日期之间迭代

c# - 从 silverlight 富文本框中提取纯文本 - LINQ to XML

javascript - Kaltura 动态嵌入播放器 : *Uncaught ReferenceError: kWidget is not defined*

javascript - 使用 javascript 在输入字段外输入时聚焦并输入输入字段

c# - SignalR 连接问题 - 连接监听器无法接受任何新连接

c# - 将窗口窗体的宽度设置为 100%,就像在 HTML 中一样

javascript - 通过 Javascript (Node.JS) 更改 JSON 返回中图像标签的宽度

azure - 扩展 azure webapp 时出现 SignalR 问题

cordova - 服务器到 Phonegap 推送 : SignalR vs Azure Notification Hub