spring4 + WebSocket笔记 [含源码]

WebSocket是HTML5的重要组成部分,据说能有诸多好处。所以花了点时间研究了一下这个东东,看看这货是何方妖孽,有何神通,能不能为我所用。

我试着下载了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

                
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值