详解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属性使网站设计增强同时不消弱可用性
Aug 29 HTML / CSS
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
Feb 04 HTML / CSS
初探CSS3中的calc()功能
Jul 14 HTML / CSS
CSS3实现超酷的黑猫警长首页
Apr 26 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
May 03 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
Dec 05 HTML / CSS
html5实现完美兼容各大浏览器的播放器
Dec 26 HTML / CSS
微信端html5页面调用分享接口示例
Mar 14 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 HTML / CSS
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
May 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
PHP图片水印类的封装
2017/07/06 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
python查询mysql中文乱码问题
2014/11/09 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python hashlib模块实例使用详解
2019/12/24 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
小学生读书活动总结
2014/06/30 职场文书
公司捐书倡议书
2015/04/27 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
三国演义读书笔记
2015/06/25 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
详解SQL报错盲注
2022/07/23 SQL Server