详解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 相关文章推荐
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 HTML / CSS
css3 线性渐变和径向渐变示例附图
Apr 08 HTML / CSS
css3弹性盒模型(Flexbox)详细介绍
Oct 08 HTML / CSS
一款纯css3实现的鼠标悬停动画按钮
Dec 29 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
Mar 16 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 HTML / CSS
详解px单位html5响应式方案
Mar 08 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
Aug 01 HTML / CSS
AmazeUI 单选框和多选框的实现示例
Aug 18 HTML / CSS
css3 实现文字闪烁效果的三种方式示例代码
Apr 25 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
PHP中调用JAVA
2006/10/09 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
php获取根域名方法汇总
2014/10/28 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP生成器简单实例
2015/05/13 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
运用js实现图层拖拽的功能
2019/05/24 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python比较2个xml内容的方法
2015/05/11 Python
window下eclipse安装python插件教程
2017/04/24 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
python实现字符串和字典的转换
2018/09/29 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
捐书寄语赠言
2014/01/18 职场文书
狼和鹿教学反思
2014/02/05 职场文书
中文教师求职信
2014/02/22 职场文书
青年志愿者活动方案
2014/08/17 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
安全生产奖惩制度
2015/08/06 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android