WebSocket是HTML5的重要组成部分,据说能有诸多好处。所以花了点时间研究了一下这个东东,看看这货是何方妖孽,有何神通,能不能为我所用。
我试着下载了spring官方的demo (地址:https://github.com/rstoyanchev/spring-websocket-test)
跑起来看到里面有点小bug,自己修改了一下,顺便阅读修改并注释了主要代码。修改后的源码在:
在这里零散的记录一下收获和感想,以后继续补充完善。
首先,spring4的这个demo已经完全没有xml配置文件了,连web.xml都木有了,这是spring的一个推荐风格。不习惯的话继续使用原先的spring.xml配置文件形式来定义配置也可以的。demo里用了一点spring Security 的东西,简单的多了一点访问权限控制。
WebSocket这边,可以看到demo里准备了很多通道,这些通道用来使客户端和服务器互相推送消息。
客户端向服务器的推送比较好理解,和传统的http模式比较类似,
我们可以给原本的Controller稍微加点料即可实现。
服务器向客户端推动则有点像jms的感觉:
简单猜想了一下WebSocket可以出手的地方。
我们使用ext时,如果使用WebSocket代替ajax做数据代理的实现,当一个人修改了数据时,另一个人就可以立刻收到新版数据的推送,减少脏数据出现的频率。当然,只是减少。
暂时还没研究这个流程的安全性,未经授权的侦听是否被spring Security阻挡住。
目前发现,如果客户端重启,客户端能正常的重新连接上服务器,但是反之不行,看来demo中没有做侧问题的容错处理。暂时没研究其他网络环境变化的影响。(例如代理)
demo中准备的降级策略,如果浏览器不支持WebSocket,会自动使用替代方案,我们无需对此过程做任何额外配置,经测试UC可以正常访问者个domo。
暂时还没有具体研究WebSocket的性能表现,那些时候WebSocket的表现优于传统http方案还不清楚,没有具体的数据对比之前,木有数据就木有发言权啊。
http://www.oschina.net/translate/websocket-architecture-in-spring-4-0
1http://www.iteye.com/news/27808-springframework-websocket
我试着下载了spring官方的demo (地址:https://github.com/rstoyanchev/spring-websocket-test)
跑起来看到里面有点小bug,自己修改了一下,顺便阅读修改并注释了主要代码。修改后的源码在:
http://git.oschina.net/sybn/webSocketDemo.git
在这里零散的记录一下收获和感想,以后继续补充完善。
首先,spring4的这个demo已经完全没有xml配置文件了,连web.xml都木有了,这是spring的一个推荐风格。不习惯的话继续使用原先的spring.xml配置文件形式来定义配置也可以的。demo里用了一点spring Security 的东西,简单的多了一点访问权限控制。
WebSocket这边,可以看到demo里准备了很多通道,这些通道用来使客户端和服务器互相推送消息。
客户端向服务器的推送比较好理解,和传统的http模式比较类似,
我们可以给原本的Controller稍微加点料即可实现。
@Controller
public class GreetingController {
@RequestMapping(value=”/greeting”, method=POST)
public void httpGreet(String text) {
// ...
}
@MessageMapping("/greeting")
public void stompGreet(String text) {
// ...
}
}
服务器向客户端推动则有点像jms的感觉:
this.messagingTemplate.convertAndSend("/topic/price.stock." + quote.getTicker(), quote);
这里的convertAndSend发送的消息是广播消息,所有侦听/topic/price.stock.*的客户端都能收到消息。
简单猜想了一下WebSocket可以出手的地方。
我们使用ext时,如果使用WebSocket代替ajax做数据代理的实现,当一个人修改了数据时,另一个人就可以立刻收到新版数据的推送,减少脏数据出现的频率。当然,只是减少。
暂时还没研究这个流程的安全性,未经授权的侦听是否被spring Security阻挡住。
目前发现,如果客户端重启,客户端能正常的重新连接上服务器,但是反之不行,看来demo中没有做侧问题的容错处理。暂时没研究其他网络环境变化的影响。(例如代理)
demo中准备的降级策略,如果浏览器不支持WebSocket,会自动使用替代方案,我们无需对此过程做任何额外配置,经测试UC可以正常访问者个domo。
暂时还没有具体研究WebSocket的性能表现,那些时候WebSocket的表现优于传统http方案还不清楚,没有具体的数据对比之前,木有数据就木有发言权啊。
http://www.oschina.net/translate/websocket-architecture-in-spring-4-0
1http://www.iteye.com/news/27808-springframework-websocket