websocket学习文档.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:14 大小:78KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

websocket学习文档.docx

websocket学习文档.docx

预览

免费试读已结束,剩余 4 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

WebSocket浏览器支持ChromeSupportedinversion4+FirefoxSupportedinversion4+InternetExplorerSupportedinversion10+OperaSupportedinversion10+SafariSupportedinversion5+WebSocket服务器端:目前支持WebSocket的服务器只有Jetty7(开源免费)和kaazingGateway(付费)。但已经有许多实现了WebSocket的开源库,可以供开发者自己开发WebSocket的服务器。1.SuperWebSocket:SuperWebSocket是WebSocket协议服务器端的.NET实现。项目首页:HYPERLINK"http://superwebsocket.codeplex.com/"http://superwebsocket.codeplex.com/SuperWebSocket是基于.NET开源Socket框架SuperSocket开发的,SuperSocket所支持的大部分功能在SuperWebSocket中得到了继承。用户可通过SuperWebSocket来快速的构建可靠的,高性能的websocket服务器端应用程序。和SuperSocket一样,SuperWebSocket可以控制台和windows服务的形式运行,同时它还支持直接运行在Website之内,这样更简化了用户的部署。2.Netty(开源):Java1.4提供了NIO使开发者可以使用Java编写高性能的服务端程序,但使用原生的NIOAPI就像LinuxC中网络编程一样,还是需要做IO处理、协议处理等低层次工作。所以,就像C服务端程序大量使用libevent作为网络应用框架一样,Java社区也不断涌现出基于NIO的网络应用框架。在这其中,Jboss出品的Netty就是个中翘楚。Netty是个异步的事件驱动网络应用框架,具有高性能、高扩展性等特性。3.Node.js+开源库(开源)Node.js可以配合node-websocket-server,socket.io,dojox.socket等一起使用来运行WebSocket(HYPERLINK"https://github.com/miksago/node-websocket-server"https://github.com/miksago/node-websocket-server)4.Web-Socket-ruby:ruby实现的。1.WebSocket概述:WebSocket作为HTML5中新增的一种通信协议,由通信协议和编程API组成,它能够在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器原生的实时通信能力。2.服务器端实现在实际的开发过程中,为了使用WebSocket接口构建Web应用,我们首先需要构建一个实现了WebSocket规范的服务器,服务器端的实现不受平台和开发语言的限制,只需要遵从WebSocket规范即可,目前已经出现了一些比较成熟的WebSocket服务器端实现,比如:KaazingWebSocketGateway—一个Java实现的WebSocketServermod_pywebsocket—一个Python实现的WebSocketServerNetty—一个Java实现的网络框架其中包括了对WebSocket的支持node.js—一个Server端的JavaScript框架提供了对WebSocket的支持如果以上的WebSocket服务端实现还不能满足你的业务需求的话,你也可以根据WebSocket规范自己实现一个服务器。websocket的协议比较简单,客户端和普通的浏览器一样通过80或者443端口和服务器进行请求握手,服务器根据httpheader识别是否一个websocket请求,如果是,则将请求升级为一个websocket连接,握手成功后就进入双向长连接的数据传输阶段.websocket的数据传输是基于帧的方式:0x00表示数据开始,0xff表示数据结束,数据以utf-8编码.2.1ClassWebSocketServerHandler@OverridepublicvoidmessageReceived(ChannelHandlerContextctx,MessageEvente)throwsException{//处理接受消息Objectmsg=e.getMessage();if(msginstanceofHttpRequest){handleHttpRequest(ctx,(HttpRe