详解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 mask遮罩实现一些特效
Oct 24 HTML / CSS
IE下实现类似CSS3 text-shadow文字阴影的几种方法
May 11 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
Mar 01 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
Apr 10 HTML / CSS
html5中去掉input type date默认样式的方法
Sep 06 HTML / CSS
把富文本的回车转为br标签
Aug 09 HTML / CSS
socket.io 和canvas 实现的共享画板功能
May 22 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
Oct 17 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
解决Firefox下不支持outerHTML问题代码分享
Jun 04 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
May 11 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
Jul 20 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
Sony CFR 320 修复改造
2020/03/14 无线电
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
Java程序开发中如何应用线程
2016/03/03 面试题
怎样写留学自荐信
2013/11/11 职场文书
自我鉴定怎么写
2014/01/12 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
触电现场处置方案
2014/05/14 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
《检阅》教学反思
2016/02/22 职场文书