服务器推送之WebSocket 入门学习路程(四) 中结
2016-07-08 18:15
639 查看
【小结2】
经过前面的这些坑,虽然看起来不多,但是别忘了,这些坑也是总结出来的,不总结的时候,谁知道是几个坑啊
【Step 6: 写高级的代码】
在弄stomp之前,强烈建议 大家看看stomp的知识,不才孤陋寡闻,以为stomp是spring支持websocket才出的东西,其实不然,这东西早就有,不看的话有些概念弄不清。
在这之前读文档的时候 就说了一个坑, 这个stomp的用法和前面的东西是分开的,不能混在一起写,是另一种实现方式。//巨大隐形坑-7
客户端:
服务端:
好啦,又经过了一些坑,总算搞定了,但是其中还有很多不明白的东西,希望有懂的大神,给说说,或者给个链接瞧瞧。
除此之外,spring在stomp上面还提供很多功能,都没研究,慢慢来。
欢迎大家指正。
【中结】
还是那句话,不知道是官网文档有问题,还是我理解有问题,总是感觉坑很多。
看官方文档需谨慎啊。
但是不甘心总是看别人的东西,总看别人的东西哪里来的原创。
经过前面的这些坑,虽然看起来不多,但是别忘了,这些坑也是总结出来的,不总结的时候,谁知道是几个坑啊
【Step 6: 写高级的代码】
在弄stomp之前,强烈建议 大家看看stomp的知识,不才孤陋寡闻,以为stomp是spring支持websocket才出的东西,其实不然,这东西早就有,不看的话有些概念弄不清。
在这之前读文档的时候 就说了一个坑, 这个stomp的用法和前面的东西是分开的,不能混在一起写,是另一种实现方式。//巨大隐形坑-7
客户端:
//这是新的写法了,和之前的都不一样 var socket = new SockJS('http://mydomain/myweb/rest/<em>portfolio</em>');//见巨坑-9 <pre name="code" class="javascript">var client = Stomp.over(socket); client.connect({},function(){ console.log("stomp is connected"); client.subscribe("/topic/custom", function(message){//<span style="color:#FF0000;">坑-8:</span>写在connect里面; <span style="color:#FF0000;">坑-11</span>:custom随便写的就是为了和后面发送消息时对应,没有别的含义: if (message.body) { alert("got message with body " + message.body); } else { alert("got empty message"); } }, {}); });
服务端:
@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {//是的,和之前完全不一样了,这就是那个<span style="color:#FF0000;">巨大隐形坑-7</span> @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/portfolio").setAllowedOrigins("*").withSockJS(); //这个portfolio是干嘛的,跳到哪? //这个东西就在这出现和前面对应,不跳到哪,不要在服务端找这个东西,除了这就没有别得地方有,<em>只是用来建立websocket链接的一个标志</em><span style="color:#FF0000;"></span>:<span style="color:#FF0000;">巨坑-9</span> registry.addEndpoint("/portfolio/info").setAllowedOrigins("*").withSockJS();//这个info参照之前的坑 } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/app");//所有发送消息的地方加前缀app registry.enableSimpleBroker("/topic");//这个东西叫主题,广播用的,就类似前面为了解决广播问题专门加的那一堆代码 } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> arg0) { // TODO Auto-generated method stub } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> arg0) { // TODO Auto-generated method stub } @Override public void configureClientInboundChannel(ChannelRegistration arg0) { // TODO Auto-generated method stub } @Override public void configureClientOutboundChannel(ChannelRegistration arg0) { // TODO Auto-generated method stub } @Override public boolean configureMessageConverters(List<MessageConverter> arg0) { // TODO Auto-generated method stub return true;//小坑一个,默认的位false:<span style="color:#FF0000;">坑-10</span> } @Override public void configureWebSocketTransport(WebSocketTransportRegistration arg0) { // TODO Auto-generated method stub } } //自己的业务类 @Controller public class ServiceBean { private SimpMessagingTemplate template; @Autowired public ServiceBean (SimpMessagingTemplate template) { this.template = template; } @RequestMapping("/do") public String do(){ //在处理完业务后,通知客户端 this.template.convertAndSend("/topic/custom", "发送的消息");//custom和<span style="color:#FF0000;">坑-11</span>对应 } }
好啦,又经过了一些坑,总算搞定了,但是其中还有很多不明白的东西,希望有懂的大神,给说说,或者给个链接瞧瞧。
除此之外,spring在stomp上面还提供很多功能,都没研究,慢慢来。
欢迎大家指正。
【中结】
还是那句话,不知道是官网文档有问题,还是我理解有问题,总是感觉坑很多。
看官方文档需谨慎啊。
但是不甘心总是看别人的东西,总看别人的东西哪里来的原创。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- i-jetty环境搭配与编译
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 2015-2016网页设计趋势分析 Web Design of Trends
- Linux部署Tomcat服务器
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器