详解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 相关文章推荐
分享8款纯CSS3实现的搜索框功能
Sep 14 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
解决CSS3的opacity属性带来的层叠顺序问题
May 09 HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
Sep 14 HTML / CSS
css3编写浏览器背景渐变背景色的方法
Mar 05 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
May 27 HTML / CSS
HTML5逐步分析实现拖放功能的方法
Sep 30 HTML / CSS
html5调用摄像头实例代码
Jun 28 HTML / CSS
纯html+css实现打字效果
Aug 02 HTML / CSS
css布局巧妙技巧之css三角示例的运用
Mar 16 HTML / CSS
css3应用示例:新增的选择器
Mar 16 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
PHP7之Mongodb API使用详解
2015/12/26 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
Three.js快速入门教程
2016/09/09 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
详解python eval函数的妙用
2017/11/16 Python
Python分析学校四六级过关情况
2017/11/22 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
性能服装:HYLETE
2018/08/14 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
2014年实习生工作总结
2014/11/27 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
Python自动化测试PO模型封装过程详解
2021/06/22 Python