Я работаю в приложении Spring-MVC, и я хотел бы включить персонализированный чат в качестве функции. После некоторых исследований я обнаружил, что Cometd является подходящим вариантом. Пройдя через документацию и навсегда повторяя образцы, у меня есть немного настроек, которые я сделал. Мне нужна помощь для интеграции персонализированной службы чата в приложении spring-mvc и включения частного чата, когда пользователь нажимает кнопку чата.Cometd with Spring-MVC для персонализированного общения
В основном, я узнал, что «/ service/chat» можно использовать для личного чата, поэтому у меня есть класс для этого, и для использования частного чата у меня должно быть сопоставление userid < -> sessionId , но я нигде не могу найти примеры, как это сделать. Я отправляю часть кода, который у меня есть, любезно сообщите мне, что осталось делать, и, если возможно, некоторые ресурсы, образцы для этого. Код
Контроллер:
@Controller
@Singleton
public class MessageController {
private MessageService messageService;
@Autowired(required = true)
@Qualifier(value ="messageService")
public void setMessageService(MessageService messageService){this.messageService=messageService;}
@RequestMapping(value = "/startchatting", produces = "application/text")
@ResponseBody
public String startChattingService(){
return "OK";
}
@RequestMapping(value = "/stopchatting",produces = "application/text")
@ResponseBody
public String stopChatting(){
return "OK";
}
}
Частная служба сообщений:
@Service
public class PrivateMessageService {
@Session
private ServerSession session;
@Listener("/service/private")
public void handlePrivateMessage(ServerSession sender, ServerMessage message){
String userId = (String) message.get("targetUserId");
//Mapping code necessary to map userids to session-id's.
//ServerSession recipient = findServerSessionFromUserId(userId);
//recipient.deliver(session,message.getChannel(),message.getData(),null);
}
}
CometConfigurer:
@Component
@Singleton
public class CometConfigurer {
private BayeuxServer bayeuxServer;
private ServerAnnotationProcessor processor;
@Inject
public void setBayeuxServer(BayeuxServer bayeuxServer){this.bayeuxServer = bayeuxServer;}
@PostConstruct
public void init() {this.processor= new ServerAnnotationProcessor(bayeuxServer);}
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
System.out.println("Configuring service " + name);
processor.processDependencies(bean);
processor.processConfigurations(bean);
processor.processCallbacks(bean);
return bean;
}
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException {
return bean;
}
public void postProcessBeforeDestruction(Object bean, String name) throws BeansException {
processor.deprocessCallbacks(bean);
}
@Bean(initMethod = "start", destroyMethod = "stop")
public BayeuxServer bayeuxServer() {
BayeuxServerImpl bean = new BayeuxServerImpl();
// bean.setOption(BayeuxServerImpl.LOG_LEVEL, "3");
return bean;
}
public void setServletContext(ServletContext servletContext) {
servletContext.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
}
}
Cometd бобы:
<beans:bean id="bayeuxServer" class="org.cometd.server.BayeuxServerImpl" init-method="start" destroy-method="stop"/>
Я непосредственно включил файлы JSP, которые имеют конфигурацию и настройку cometd от https://github.com/fredang/cometd-spring-example, и изменили их для удовлетворения моих потребностей. Пожалуйста, дайте мне знать, что еще остается, все предложения приветствуются, я не могу найти примеры для той же задачи в сети, которые детализированы, и иметь больше кода, чем объяснение. Спасибо.
Я попробую ... Я использовал пример spring-mvc-chat и внедрил его. Я хотел бы включить поддержку websocket для этого, я разместил вопрос, вы можете проверить эту ссылку: http : //stackoverflow.com/questions/27289429/modifications-for-using-deferredresult-in-spring-mvc –
Привет, я ищу что-то подобное, но самое последнее, есть ли какие-нибудь рекомендации? – Fabricelepro