详解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用@font-face实现自定义英文字体
Sep 23 HTML / CSS
纯css3实现的竖形无限级导航
Dec 10 HTML / CSS
利用CSS3实现开门效果实例源码
Aug 22 HTML / CSS
CSS3实现div从下往上滑入滑出效果示例
Apr 28 HTML / CSS
纯CSS3实现的井字棋游戏
Nov 25 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
Jan 08 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
Apr 08 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
May 03 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
May 13 HTML / CSS
html5 canvas手势解锁源码分享
Jan 07 HTML / CSS
CSS3 制作精美的定价表
Apr 06 HTML / CSS
CSS的class与id常用的命名规则
May 18 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
大家须知简单的php性能优化注意点
2016/01/04 PHP
php fread函数使用方法总结
2019/05/28 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
js操作二进制数据方法
2018/03/03 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
js实现碰撞检测
2021/01/29 Javascript
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python如何在循环引用中管理内存
2018/03/20 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
销售顾问的岗位职责
2013/11/13 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
论群众路线学习笔记
2014/11/06 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
深入浅析Django MTV模式
2021/09/04 Python