- Я работаю над приложением Spring-MVC, в котором я хотел бы реализовать функции чата, предоставляемые Cometd. Теперь, в этом проекте , существуют различные группы с уникальным идентификатором (основной ключ). Всякий раз, когда создается группа, я хотел бы создать канал, а затем , когда член отправляет сообщение внутри группы, тогда сообщение отправлено через этот канал, поэтому оно переходит только к группе. Нет требуется постоянство сообщений чата, только сообщения должны быть , нажатые всем, кто находится в сети.
- Моя главная мотивация выбора cometd был, как я читал есть много документации и помощи, но, как я вижу, есть вряд ли хорошие примеры по сети и документации на веб-сайте проекта является затемняется слишком много Технические подробности. Я внедрил код , но, честно говоря, я не знаю, что делать дальше и куда идти .
Вот некоторые из кода я реализованный, любезно посмотреть.Spring MVC: Внедрение функциональности Cometd channel
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
}
}
Любая помощь будет хорошо о том, как создавать каналы, подписаться и отправлять сообщения через них. Если кто-то хочет поболтать за это, любезно опубликуйте комментарий, я создам комнату для этого же. Большое спасибо. :-)
Документация CometD включает в себя [учебники] (http://docs.cometd.org/tutorials/) для простых случаев, подобных вашим. Вы читали и изучали их? – sbordet
@sbordet: У меня ... Не выполняется прецедент, который я ищу. –