老的Websocket介绍

  WebSocket通信协议实现的是基于浏览器的原生socket,在客户端用JS即可轻松完成。WebSocket的最大功效就是实时性,可以不用刷新就可以接收数据,这点和Ajax很像,但是又不同于Ajax,Ajax需要发送请求,而WebSocket不用发请求就可以接受服务器端的数据。下面介绍一下WebSocket协议:

        WebSocket的协议是很简单的,这里我把它分成客户端和服务端来讲。在客户端,new WebSocket即可实例化一个新的WebSocket对象,但其参数略微有一点不一样,参数格式是这样的ws://yourdomain:port/path ,

        eg:ws = new WebSocket( “ws://www.zendstudio.net:9108/chat” );)

        WebSocket对象会自动解析这段字符串,发送到指定服务器端口,首先执行的是双方握手(handshake),客户端发送数据格式类似这样:

             GET /chat HTTP/1.1Upgrade: WebSocketConnection: Upgrade Host:  www.zendstudio.net:9108Origin :                          http://www.zendstudio.net  Cookie: somenterCookie

        这很是有些类似于http的头信息,同样每行都是以”\r\n”结尾的,上面这段格式无需我们去构造,WebSocket对象会自动发送,对客户端这是透明的。此时服务端应该返回的信息是:

             HTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocket Connection: UpgradeWebSocket-Origin:                           http://www.zendstudio.net  WebSocket-Location: ws://www.zendstudio.net:9108/chat

        从这里我们太容易看出来,WebSocket协议的握手部分根本就是个类http的协议,所不同的是http每次都会有这样子的头信息交互,这在某些时候不得不显得很糟糕。而WebSocket只会执行一次这个过程,之后的传输信息就变得异常简洁了。

        客户端在握手成功后,会触发WebSocket对象的onopen事件,告诉客户端连接已经成功建立了。客户端的WebSocket对象一共绑定了四个事件:

          1、onopen:连接建立时触发;

          2、onmessage:收到服务端消息时触发;

          3、onerror:连接出错时触发;

         4、onclose:连接关闭时触发;

       有了这4个事件,我们就可以很容易很轻松的驾驭WebSocket,并且需要说明的是WebSocket支持二进制数据的传输,因此,它远不止聊天室应用这么简单。

       服务端呢?服务端也是非常简单的,但是仍然需要注意的问题是,作为服务器,安全和性能是不可忽略的,除此之外,只管往socket里面写数据就可以了,WebSocket的通信数据全部是以”\x00″开头以”\xFF”结尾的,无论是服务端发出的数据还是客户端发送的数据都遵从这个格式,唯一不同的是客户端的WebSocket对象能够自动将头尾去除,获得主体数据,这就省却了我们在客户端处理原始数据的必要,真是个体贴周到的对象啊!顺便说一句,WebSocket通信数据的编码总是UTF-8格式的。好了,WebSocket协议就是这么简单。到这里,写一个服务端应该不是什么困难的事情了吧?这仅仅需要一点点socket编程知识,任何语言都可以轻松实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值