javascript - 如何在 signalR 中实现 "on"方法?

标签 javascript signalr

我正在使用最新版本的 signalR,我想改进 on 方法:

var connection = new signalR.HubConnection('/chat');

connection.on('greeting', msg => $log(msg));
connection.on('sayhello', msg => $log(msg));

我的目标是这样的:

connection
    .on('greeting', msg => $log(msg))
    .on('sayhello', msg => $log(msg));

我该怎么做?谢谢!

最佳答案

如果您使用的包不允许链接(意味着它不会在 on 方法中返回实例),那么您可以创建一个包装器来实现您想要的。

class MyConnection {
    connection;

    constructor(connection) {
        this.connection = connection;
    }

    on(key, callback) {
        this.connection.on(key, callback);
        return this;
    }
}

现在像这样申请:

var myConnection = new MyConnection(connection);

myConnection.on('greeting', msg => $log(msg))
            .on('sayhello', msg => $log(msg));

这种方法通常用于企业软件(至少在服务器端),因为它允许您做一些事情:

  1. 扩展第三方包以添加您的域特定逻辑
  2. 以一种更容易用你的系统进行测试的方式包装它
  3. 仅在您不希望人们使用所有第三方包的情况下公开您希望开发人员使用的功能

关于javascript - 如何在 signalR 中实现 "on"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49533857/

相关文章:

javascript - 使用 nodeJS 查询前 5 个查看项目(排序)的 Mongoose

c# - SignalR 1.1.3 能否与 IIS6 可靠地配合使用

asp.net - SignalR 与 Angular 10 和 ASP.NET

SignalR 与服务器发送事件 HTML 5

internet-explorer - SignalR - IE 中的 Forever Frame 在空闲几分钟后停止工作

javascript - "long polling"是创建 Web 实时应用程序的最有效方法吗?

javascript - 如何制作多个可移动元素

javascript - 如何提供 Google map 实例的屏幕截图?

javascript - d3js v3 : Selecting a Node on click

c# - C# 桌面应用程序、移动应用程序和 SQL 服务器之间的实时更新