一个html5页面怎么创建多个websocket

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个html5页面怎么创建多个websocket相关的知识,希望对你有一定的参考价值。

参考技术A 1. WebSocket API简介
首先看一段简单的javascript代码,该代码调用了WebSockets的API。

[javascript] view plaincopy
var ws = new WebSocket(“ws://echo.websocket.org”);

ws.onopen = function()ws.send(“Test!”); ;

ws.onmessage = function(evt)console.log(evt.data);ws.close();;

ws.onclose = function(evt)console.log(“WebSocketClosed!”);;

ws.onerror = function(evt)console.log(“WebSocketError!”);;

这份代码总共只有5行,现在简单概述一下这5行代码的意义。
第一行代码是在申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。
第二行到第五行为WebSocket对象注册消息的处理函数,WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror,当Browser和WebSocketServer连接成功后,会触发onopen消息;如果连接失败,发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;当Browser接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;当Browser接收到WebSocketServer端发送的关闭连接请求时,就会触发onclose消息。我们可以看出所有的操作都是采用消息的方式触发的,这样就不会阻塞UI,使得UI有更快的响应时间,得到更好的用户体验。

将 Websocket-Connection 保持在多个页面上

【中文标题】将 Websocket-Connection 保持在多个页面上【英文标题】:Hold Websocket-Connection over several pages 【发布时间】:2015-03-30 15:31:22 【问题描述】:

我需要一个想法来设计一个与我的 C++-Webserver 通信的复杂 html/javascript(jQuery) 系统。

直到现在我有一个主 index.html 并且我通过事件加载子模块:

$(".MainButton").click(function()
   $("#swap").load($(this).attr('alt'));
);

现在的问题是每个子模块都需要一个 Websocket 连接,我不想为我正在加载的每个子模块打开一个新的连接。

是否可以打开全局 Websocket 连接..

var ws = new WebSocket("ws://localhost:800/stream");

.. 并在每个子页面中使用 ws?

非常感谢。

【问题讨论】:

【参考方案1】:

您的问题的标题和内容不同。至于内容,如果你通过 jQuery 的 load 方法加载 HTML 片段(而不是页面),这些片段会合并到文档中,结果只有那个文档存在。如果是您的情况,您为什么不通过将ws 设为window 的全局变量并在子模块中使用它来打开main.html 上的连接?只要子模块的URI与CORS同源或跨源,就可以访问和操作main.html的ws

但是,如果您坚持应该在多个页面上保持连接,包括刷新 main.html 作为您的问题的标题,那么除非您使用 Single-page application,否则现在是不可能的。详情见以下:

How to maintain a WebSockets connection between pages? Do Shared Web Workers persist across a single page reload, link navigation http://tavendo.com/blog/post/websocket-persistent-connections/

【讨论】:

以上是关于一个html5页面怎么创建多个websocket的主要内容,如果未能解决你的问题,请参考以下文章

Html5如何快速在页面中写出多个轮播图效果

HTML5怎么使多个网页播放音乐同步 我想弄切换网页后音乐不会停止,还是继续播放

html5怎么实现页面左右滑动(下图区域),可以左右滑动但不需要换页

如何使用 html5/动态站点创建 URL [关闭]

html5 怎么制作响应式网页

html5怎么可以添加多个音频然后一个接着一个播放??、急急急