2015-04-07 2 views
0
  • Я работаю над приложением 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 
    } 
} 

Любая помощь будет хорошо о том, как создавать каналы, подписаться и отправлять сообщения через них. Если кто-то хочет поболтать за это, любезно опубликуйте комментарий, я создам комнату для этого же. Большое спасибо. :-)

+0

Документация CometD включает в себя [учебники] (http://docs.cometd.org/tutorials/) для простых случаев, подобных вашим. Вы читали и изучали их? – sbordet

+0

@sbordet: У меня ... Не выполняется прецедент, который я ищу. –

ответ

0

Если вы переводите концепт «группы» на то, что в tutorial является символом запаса, прецедент кажется мне идентичным (если нет, то вам нужно подробно рассказать о своем вопросе).

Поэтому, просмотрев example 3.2 учебника, вы увидите, как обновление цены акций будет отправлено всем подписчикам, заинтересованным в изменениях для этого конкретного запаса.

В вашем случае пример учебника переводит на отправку сообщения всем членам определенной группы, о чем вы просили.

Учебник содержит код с комментариями о том, как создать канал, инициализировать его и использовать для отправки сообщений своим подписчикам.

Дайте учебное пособие: постройте его, запустите, изучите его. Как только вы поймете, как это работает, вы увидите, что ваш пример аналогичен и очень легко реализуется.

Как только у вас есть базовые функции, которые вы хотите запустить, подумайте о добавлении authorization. Это позволит вам точно настроить, кто может отправлять сообщения на какой канал.

Смежные вопросы