jetty8不支持Java86_用jetty搭建websocket服务并与ie78兼容的方法

jetty8中已经自带有websocket功能,所以我们可以很方便搭建一个自己的websocket服务。

启动类:org.noahx.websocket.WebSocketServer

1、外部依赖包如下(maven)

2、搭建的websocket server,写一个服务器启动类

WebSocketServer

websocket服务端口我设置的为8085。通过向jetty server中加入WebSocketHandler就可以提供websocket服务了。由于WebSocketHandler是HandlerWrapper的子类,所以这个handler中还可以再加入一个ResourceHandler。这样就可以在一个端口上同时提供websocket与http服务。ResourceHandler指向了类路径org/noahx/websocket/http下,这个包下的所有资源都将可以发布为web资源给http请求。

3、开发MyWebSocketHandler与MyWebSocket

MyWebSocketHandler与MyWebSocket

doWebSocketConnect中实现doWebSocketConnect方法,返回我们需要的WebSocket对象。 doWebSocketConnect方法中可以取到请求的url,所以可以当做分发器,通过url的不同分发到不同WebSocket。

如:ws://127.0.0.1:8085/ws1与ws://127.0.0.1:8085/ws2

MyWebSocket所实现的内容是以每500毫秒的速度,向浏览器发送0-100的随机数(注意这里是由服务器主动推送)。

MemTask

取随机数的任务类

4、开发前台javascript客户机(test.html)

使用到了以下内容:

web-socket-js,https://github.com/gimite/web-socket-js/就是这个解决了不支持html5的websocket的浏览器也可以调用websocket的问题。web-socket-js会自动判断是不是支持html5的websocket,如果支持没有什么区别。如果发现不支持将通过Flash自动调用websocket来做socket的中转。

highcharts,http://www.highcharts.com/这个是通过纯javascript(jquery)来绘制图表的js图表框架。来配合websocket,做到实时的动态图表。

test.html

原理是通过web-socket-js建立与服务器的websocket连接,服务器发现连接后会主动推送数据给浏览器。

收到服务器推送过来的数据会触发onmessage,这时在onmessage中对图表进行绘制。从而达到效果。

*5、Flash Policy Server的配置

ie78可以使用websocket的关键。web-socket-js会调用flash请求websocket。

flash请求websocket也有一个前提。flash会检查安全策略文件(xml)是否允许它这样做。默认flash会请求相同host的843端口,发送policy-file-request请求,这时返回正常的安全策略时,websocket才可以正常使用。当然我们也可以通过WebSocket.loadFlashPolicyFile(方法重新指定策略文件url。样例是指向了10843端口,因为如果监听<1000的端口需要root权限,所以内嵌Java版的Flash Policy Server端口为10843。

但还是建议不要手动指定WebSocket.loadFlashPolicyFile,而是用843。因为flash总是先会从843找,如果找不到再从websocket端口找(8085)。所以如果设置其它url了会影响加载速度。

Flash Policy的资料可以参考:http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html里面提供了一个flashpolicyd_v0.6程序,可以做Flash Policy Server,但不是java实现的。

我也写了一个Flash Policy Server,java版的

FlashPolicyServer

这样就可以和websocket server整合在一起。

安全策略文件的样例格式:

6、websocket展望

继ajax后websocket会给界面带来更快更好的交互效果与体验,伴随移动市场的壮大websocket也将有可能成为标准的api协议。

框架介绍:

AS3WebSocket,https://github.com/Worlize/AS3WebSocket提供给ActiveScript3使用的websocket框架

jWebSocket,http://jwebsocket.org/有服务器与客户端,高一级别websocket框架,提供了对基础websocket的扩展,如jsonSocket,xmlSocket,cvsSocket

kaazing(商业),http://kaazing.com/商业级整套html5与websocket解决方案,效果最好,可惜是商业的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值