如何在 socketcluster 上以编程方式创建通道?

How to create channel programmatically on socketcluster?

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

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

例如,从客户端调用:POST https://<myServer>/api/channels with JSON body { "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,通道会自动为您创建和销毁,因此您无需管理它们的生命周期。如果至少有一个客户端订阅(基于通道名称),将在后端创建一个通道,并在所有这些客户端断开连接或取消订阅后自动销毁。 SC 也考虑了失败案例 - 例如如果互联网连接意外丢失。

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

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