【问题标题】:How to create channel programmatically on socketcluster?如何在 socketcluster 上以编程方式创建通道?
【发布时间】:2017-02-09 14:04:35
【问题描述】:

我正在考虑使用socketcluster 来构建一个实时应用程序。文档非常清楚,但我找不到以编程方式按需创建频道的方法。

我的需要是:作为用户,我想调用一个 REST API,它将创建一个通道,该通道将立即在服务器上启动并运行。

例如,从客户端调用:POST https://<myServer>/api/channels 和 JSON 正文 { "channel": "myChannel} 将在服务器上创建一个 myChannel 通道,我的客户端代码将能够直接订阅(在收到服务器响应后):

 var myChannel = socket.subscribe('myChannel');
 myChannel.publish('myChannel', 'I am here !');
 myChannel.watch(function (data) {
     console.log('received data from myChannel:', data);
 });

我想这个新创建的频道会使用我的授权中间件作为middlewares are defined at server level(wsServer.addMiddleware(wsServer.MIDDLEWARE_SUBSCRIBE, ...)

非常感谢您的帮助,

皮埃尔

【问题讨论】:

    标签: socketcluster


    【解决方案1】:

    使用 SocketCluster,会自动为您创建和销毁通道,因此您无需管理它们的生命周期。如果至少有一个客户端订阅了通道(基于通道名称),则将在后端创建一个通道,并且一旦所有这些客户端断开或取消订阅该通道,该通道将自动销毁。 SC 也考虑失败案例 - 例如。如果 Internet 连接意外丢失。

    SC 旨在高效地动态创建和销毁许多独特的频道。每个用户可以拥有数百个独特的频道(因此总共可能有数千甚至数百万个独特的频道)。如果通道处于空闲状态并且每个通道占用的内存很小,则它们根本不会消耗任何 CPU。

    SC 中的通道不是消息队列(与 RabbitMQ、NSQ、Kafka、Stomp...不同); SC 不会将消息存储在持久队列中(尽管您可以使用自己的持久逻辑扩展 SC)。

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 2014-07-21
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多