以下是我实施的一些代码,请仔细看看。
ChatService.java:
package com.journaldev.spring.chat;
import org.cometd.annotation.ServerAnnotationProcessor;
import org.cometd.bayeux.server.BayeuxServer;
import org.cometd.server.BayeuxServerImpl;
import org.springframework.beans.BeansException;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletContext;
@Component
@Singleton
public class ChatService{
private BayeuxServer bayeuxServer;
private ServerAnnotationProcessor serverAnnotationProcessor;
@Inject
public void setBayeuxServer(BayeuxServer bayeuxServer){
this.bayeuxServer = bayeuxServer;
}
@PostConstruct
public void init(){
this.serverAnnotationProcessor = new ServerAnnotationProcessor(bayeuxServer);
}
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException{
System.out.println("Configuring Service "+name);
serverAnnotationProcessor.processDependencies(bean);
serverAnnotationProcessor.processConfigurations(bean);
serverAnnotationProcessor.processCallbacks(bean);
return bean;
}
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException {
return bean;
}
public void postProcessBeforeDestruction(Object bean, String name) throws BeansException {
serverAnnotationProcessor.deprocessCallbacks(bean);
}
@Bean(initMethod = "start", destroyMethod = "stop")
public BayeuxServer bayeuxServer() {
// bean.setOption(BayeuxServerImpl.LOG, "3");
return new BayeuxServerImpl();
}
public void setServletContext(ServletContext servletContext) {
servletContext.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
}
}
ChatProducer:
public class ChatProducer {
private ChatService chatService;
public void setChatService(ChatService chatService){
this.chatService = chatService;
}
public synchronized void sendMessages(String messages){
// Unfortunately I don't know where to send the messsages and how
}
}
如何通过它们创建频道,订阅和发送消息,任何帮助都会很好。如果有人想为此聊天,请发表评论,我会为此创建一个聊天室。非常感谢。 : - )
答案 0 :(得分:0)
如果您将“组”概念翻译为tutorial中的股票代码,则用例与我相同(如果不是,那么您必须详细说明您的问题)。
因此,通过查看本教程的example 3.2,您将看到如何将股票价格更新发送给对该特定股票变更感兴趣的所有订阅者。
在您的情况下,教程示例转换为向特定组的所有成员发送消息,这是您要求的。
本教程包含的代码包含有关如何创建频道,初始化频道以及使用它向其订阅者发送消息的评论。
给教程一个:构建它,运行它,研究它。一旦掌握了它的工作原理,您就会发现您的示例相似且非常容易实现。
获得要运行的基本功能后,请考虑添加authorization。这样您就可以微调谁可以将消息发布到哪个频道。