详解WebSocket跨域问题解决


Posted in HTML / CSS onAugust 06, 2018

WebSocket protocol是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很好的实现。我们使用Socket.io,它很好地封装了webSocket接口,提供了更简单、灵活的接口,也对不支持webSocket的浏览器提供了向下兼容。

项目中遇到javascript跨域问题,父页面和子页面要通信,并且父子页面跨域,怎么办?

项目中要保证父子页面通信是点对点,需要在服务端建立对父子页面WebSocket的对应关系,即父页面发的消息只被子页面收到,子页面的消息也只被父页面收到我们做了以下工作,严格保证了

WebSocket通信是点对点:

一是建立WebSocket链接的URL加上时间戳保证通信会话是唯一的;

二是在服务端保证父子页面WebSocket一一对应关系。父子页面的WebSocket在Open时都会向服务端发出消息进行注册,建立Senssion之间的对应关系。然后父子页面就可通过双方约束的通信协议进行通信了。

这里我们写个demo:

var p = document.getElementsByTagName(‘p’)[0];

var io = io.connect(‘http://127.0.0.1:3001’);

io.on(‘data’,function(data){

alert(‘2S后改变数据’);

p.innerHTML = data

});

服务器端

var io = require(‘socket.io’)(server);

io.on(‘connection’,function(client){

client.emit(‘data’,’hello WebSocket from 3001.’);

});

今天就说到这里,希望对大家有所帮助,同时大家如果不想太花时间去做WebSocket这块,可以尝试使用三方WebSocket,类似GoEasy 极光之类的。

这里推荐GoEasy,简单易用 www.goeasy.io 还是免费的,可以尝试一下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
用CSS3的box-reflect来制作倒影效果
Nov 15 HTML / CSS
解决margin 外边距合并问题
Jul 03 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
May 03 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
Jul 11 HTML / CSS
HTML5通用接口详解
Jun 12 HTML / CSS
html5中的一些标签学习(心得)
Oct 18 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
Jul 29 HTML / CSS
Canvas多边形绘制的实现方法
Aug 05 HTML / CSS
Html5嵌入钉钉的实现示例
Jun 04 HTML / CSS
使用CSS实现百叶窗效果示例代码
May 07 HTML / CSS
canvas实现二维码和图片合成的示例代码
Aug 01 #HTML / CSS
HTML5拖拽功能实现的拼图游戏
Jul 31 #HTML / CSS
Html5页面二次分享的实现
Jul 30 #HTML / CSS
利用Storage Event实现页面间通信的示例代码
Jul 26 #HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
Jul 24 #HTML / CSS
htnl5利用svg页面高斯模糊的方法
Jul 20 #HTML / CSS
html5 input输入实时检测以及延时优化
Jul 18 #HTML / CSS
You might like
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
深入探讨前端框架react
2015/12/09 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
如何抽象一个Vue公共组件
2017/10/17 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python下Fabric的简单部署方法
2015/07/14 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
pandas apply多线程实现代码
2020/08/17 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
C#面试常见问题
2013/02/25 面试题
财务管理专业自荐信范文
2013/12/24 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
党员民主评议总结
2014/10/20 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js