跨域技术之WEB SOCKET

WEB SOCKET的目标是在一个单独的、持久的连接上提供全双工,双向通信,在JS中创建WEB SOCKET之后,会有一个HTTP请求发送到浏览器以发起连接,服务器响应后,建立的连接就会使用HTTP升级变为WEB SOCKET协议(原来是HTTP协议)

此时未加密协议的连接是WS://,加密的是WSS://  原来是HTTP://和HTTPS://

这种自定义协议的好处是,可以发送非常少的数据而不必像HTTP那样有字节级的开销,对移动端这种对带宽和延迟要求极高的场景尤为合适。

首先要创建一个WEBSOCKET对象,并传入URL

var socket=new WebSocket("ws://www.example.com/som.php");

这个链接必须用绝对链接,可以跨域到任何地方。

实例化之后,浏览器马上就会尝试创建链接,并有个状态码readyState属性,0=正在建立链接,1=已经建立链接,2=正在关闭链接,3=已经关闭链接,这个码永远从0开始。

我们再来发送一点数据。

socket.send("Hello");

注意Web Socket只能发送纯文本数据,所以如果发送复杂的格式的数据可以用JSON.STRINGFY来把数据序列化一下。

WEBSOCKET是双工通信,所以仅能发数据还不行,我们再收一点数据。

当服务器发来消息时,就会触发WEBSOCKET对象的MESSAGE事件,这个事件会把返回的结果保存在EVENT.DATA中。

socket.onmessage=function(event){
var data=event.data;

}

当然,得到的数据也是字符串,需要自己解析。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值