我正在尝试创建一个非常简单的 cometD 应用程序。主要是我想动态创建频道。首先,我尝试了 localsession 频道,并在创建后通过客户端 javascript 订阅了它们。它工作完美,但不适用于动态频道创建。让我通过 javascript 传递 rom 变量,ROOM: 'firstroom'
这将创建一个像"/members/firstroom".
但是在另一个用户(例如 ROOM)的另一个呼叫中:'anotherroom' 它创建了另一个房间但破坏了旧房间。
简而言之,我希望所有动态创建的通道都存储在内存中。我试过的客户会话:
ClientSessionChannel channel = _session.getLocalSession().getChannel('/members/'+room);
channel.publish(members);
然后我尝试像这样在服务器上创建和订阅:
ServerChannel channel = _bayeux.getChannel("/member"+room);
LocalSession localSession = _session.getLocalSession();
channel.subscribe(client);
ServerMessage.Mutable forward = _bayeux.newMessage();
forward.setData(_members);
channel.publish(localSession, forward);
但我在想服务器端订阅将如何改变客户端 html 代码。如何
channel.publish(localSession, forward);
将取代
$.cometd.subscribe('/members', manage_members);
manage_members 在服务器端订阅中的位置。
直截了当如何动态创建和存储频道?