一.WebSocket通讯

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与server全双工通信。

为保证socket不间断。使用下面类库进行socket通讯。

https://github.com/joewalnes/reconnecting-websocket

1.初始化Socket

loadSocket = function () {
try {
if ("WebSocket" in window) {
ws = new ReconnectingWebSocket(url, null, { debug: true, maxReconnectAttempts: 10 });
}
else if ("MozWebSocket" in window) {
ws = new MozWebSocket(url);
} else {
// document.getElementById("message_output").innerHTML = "浏览器不支持WebSocket";
}
ws.onopen = function ()
//document.getElementById("message_output").innerHTML = "连接server成功" + "<br/>";
}
ws.onclose = function () {
// document.getElementById("message_output").innerHTML = "与server断开连接" + "<br/>";
}
ws.onerror = function () {
//document.getElementById("message_output").innerHTML = "通信错误发生" + "<br/>";
}
ws.onmessage = function (msg) {//接收到消息
receiveSocketMessage(msg);
}
} catch (ex)
{ }
};

2.接收Socket消息

receiveSocketMessage = function (msg) {
var msgObj = JSON.parse(msg.data);
var type = msgObj.type;
var content = msgObj.content;
console.log(msgObj);
};

3.发送Socket消息

sendSocketMessage = function (msg) {//发送消息
if (ws) {
ws.send(msg);
}
};

4.应用场景

这样的方式能够做多台client的同步、前台与后台的同步,比方第一台client编辑的内容实时同步到第二台client。这时候就能够用socket通讯。

可是一机双屏用这样的方式须要过多关注socket后台的控制。所以採用另外一种方式实现

二.localStorage

通过监听localStorage的数据变化实现同一浏览器下不同页面之间的通讯,比脚本函数直接控制更加便捷。

(跨域不适用。须要结合postmessage)

推荐lsbridge库直接进行应用。https://github.com/krasimir/lsbridge

1.发送消息

lsbridge.send('my-namespace', { message: 'Hello world!' });

2.监听消息

lsbridge.subscribe('my-namespace', function(data) {
console.log(data); })

3.应用场景

比方同一时候打开业务系统和地图系统,定位地图,画图内容返回到业务平台等应用。

三.总结

两种方式都是html5的技术应用。所以要注意兼容性。在合适的场景选择合适的技术。

BS一机双屏的解决方式的更多相关文章

  1. 使用Reveal来查看别人的APP界面+白苹果不刷机解决方式

    Reveal这个强大的界面调试工具.能够实时查看.改动view的属性,大体上实现了iOS程序猿梦寐以求的功能.比方,有时候我们加入了一个view,可是那个view死活不显示出来,这时候祭出Reveal ...

  2. Mac OS X 10.10, Eclipse+ADT真机调试代码时,Device Chooser中不显示真机的解决方式

    Mac OS X 10.10的环境下.Eclipse+ADT,进行真机调试时,会出现一个问题. Device Chooser对话框里不显示真机设备,仅仅有又一次插拔数据线才干够. 经过測试.有两个暂时 ...

  3. 批处理安装Windows服务,提示"InstallUtil.exe"不是内部命令也不是外部命令解决方式

    今天在测试一个C#写的windows服务的时候,在用bat进行调用cmd安装的时候, cd C:\Windows\Microsoft.NET\Framework\v2.0.50727 InstallU ...

  4. 浏览器关闭使session失效的问题多种解决方式

    直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,此举将会导致session失效,下面整理了一些解决方法,感兴趣的朋友可以参考下哈   如果用户不点击网站的“退出”链 ...

  5. NAT的全然分析及其UDP穿透的全然解决方式

    NAT的全然分析及其UDP穿透的全然解决方式   一:基本术语 防火墙 防火墙限制了私网与公网的通信,它主要是将(防火墙)觉得未经授权的的包丢弃,防火墙仅仅是检验包的数据,并不改动数据包中的IP地址和 ...

  6. Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)

    补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...

  7. ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方式及原因

    注意,文档中的ip和指纹已经替换为了ip.ip.ip.ip 和aa:... ,以免引起不必要的误会. icode@test:~/lab/dir/sadf$ ssh remote_name@ip.ip. ...

  8. Linux转发性能评估与优化(转发瓶颈分析与解决方式)

    线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...

  9. Uiautomator--出现报错“urllib3.exceptions.ProtocolError:<'Connection aborted.',error<10054,''>>”的解决方式!

    在运行uiautomator时,出现报错"urllib3.exceptions.ProtocolError:<'Connection aborted.',error<10054, ...

随机推荐

  1. 解决Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;mysql&#39;问题

    在改动mysql的root用户password后,再登陆,提示如标题的错误,找了一番答案之后,最终解决,过程例如以下: 1.停掉mysql:      service mysqld stop 2.使用 ...

  2. Linux下HTTP Server

    想在Linux下实现一个简单的web Server并不难.一个最简单的HTTP Server不过是一个高级的文件服务器,不断地接收客户端(浏览器)发送的HTTP请求,解析请求,处理请求,然后像客户端回 ...

  3. DP - 字符混编

    字符混编 Problem's Link ---------------------------------------------------------------------------- Mea ...

  4. 关于VS2013的安装遇到的问题

    老师突然说实验一需要用代码实现,我之前配置的cocos的编程环境是cocos+VS2013,是很稳定的 但是,我安装unity5.5的时候,不小心选择了顺带安装了VS2015,就等于我电脑里面有了两个 ...

  5. erlang的汉字字符串和二进制的相互转换,并还原成汉字打印

    19> Hanzi = <<"汉字"/utf8>>. <<230,177,137,229,173,151>> 20> i ...

  6. RAID的简单说明

    RAID,为 Redundant Arrays of Independent Disks 的简称,中文为廉价※冗余磁盘阵列 . 磁盘阵列 其实也分为软阵列 (Software Raid) 和硬阵列 ( ...

  7. git chekout分支遇到问题:need merge

    解决步骤: 在master上, 1.git add . 2.git commit 3.新建分支,并且checkout到此分支,重新提交

  8. ActiveMQ搭建

    下载 到ActiveMQ官网,找到下载点. 目前, 官网为http://activemq.apache.org/ Linux版本下载点之一为:http://apache.fayea.com/activ ...

  9. MathType中如何快速输入空心字母

    MathType输入数学公式时非常方便有效的,在文档中涉及到数学公式或者符号时都是使用MathType来进行的,因为它比Office自带的公式编辑器功能更为完善,使用起来更快捷.在数学公式中,在不同的 ...

  10. ios开发之 -- invalid nib registered for identifier

    今天在写代码的时候,碰到这麽一个问题: invalid nib registered for identifier (重用符) - nib must contain exactly one top l ...