`
yanjie_1206
  • 浏览: 8023 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

html 5 websocket

 
阅读更多

HTML5中通过调用与数据通信相关的Web Socket API,实现从服务器中推送信息到客户端。
Socket又称为套接字,是基于W3C标准开发在一个TCP接口中进行双向通信的技术。通常
情况下,Socket用于描述IP地址和端口,是通信过程中的一个字符句柄。当服务器端又多个应用服务绑定一个Socket时,
通过通信中的字符句柄,实现不同端口对应不同应用服务功能。目前,大部分浏览器都支持HTML5中Socket API的运行。

WebSocket连接服务器和客户端,这个链接是一个实时的长连接,服务器端一旦与客户端建立了双向链接,
就可以将数据推送到Socket中,客户端只要有一个Socket绑定的地址和端口与服务器建立联系,就可以接收推送来的数据。

WebSocket API 的使用分为以下几个步骤:

步骤1、 创建连接,新建一个WebSocket对象十分的方便,代码如下:
var host = "ws://echo.websocket.org/";
var socket=new WebSocket(host);
注意:其中,URL必须以“ws”字符开头,剩余部分可以使用像HTTP地址一样来编写。该地址没有使用
HTTP协议写法,因为它的属性为WebSocket URL;URL必须由4个部分组成,分别是通信标记(ws)、主机名称(host),端口号(port)
及WebSocket Server.

步骤2,发送数据。当WebSocket对象与服务器建立联系后,使用如下代码发送数据:
socket.send(dataInfo);
注意:其中,objWs为新创建的WebSocket对象,send()方法中的dataInfo参数为字符类型,即只能使用文本数据或者将JSON对象转换成文本内容的数据格式。

步骤3,接收数据。客户端添加事件机制接收服务器发送来的数据,代码如下:
socket.onmessage=function(event){
    //弹出收到的信息
    alert(event.data);
    //其他代码
}
其中,通过回调函数中event对象的"data"属性来获取服务器端发送的数据内容,该内容可以是一个字符串或者JSON对象。

步骤4 状态标志。通过WebSocket对象的“readyState”属性记录连接过程中的状态值。
"readyState"属性是一个连接的状态标志,用于获取WebSocket对象在连接,打开,变比中和关闭时的状态。该状态标志共有4中属性值,如下表所示:


————————————————————————————————————
    属性值        属性常量        描述
————————————————————————————————————
    0        CONNECTING        连接尚未建立
    1        OPEN            WebSocket的链接已经建立
    2        CLOSING            连接正在关闭
    3        CLOSED            连接已经关闭或不可用
————————————————————————————————————

WebSocket对象在连接过程中,通过侦测这个状态标志的变化,可以获取服务器端与客户端连接的状态,并将连接状态已状态码形式返回给客户端。

步骤5 关闭socket连接。

socket.close();

————————————————————————————————————————————————————————————————
在实际应用中,socket服务器端的代码可以是Python,node.js,java,php。在这里我可以使用http://www.websocket.org/网站提供的,socket
服务端。协议地址为:ws://echo.websocket.org/
完整代码如下:
————————————————————————————————————————————————————————————————
<html>
<head>
<title>Jack张WebSocket实例</title>

<style>
html,body{font:normal 14px;margin:0 auto;}
#log {width:440px;
            height:270px;
            text-align:left;
            overflow:auto;margin:0px auto;
            font-weight:bold;color:#F8F8F8;
            }
#msg {width:330px;margin:0px auto;}
#imagebg{
    background-image: url(images/images.jpg);
    background-repeat: no-repeat;
    background-position: center top;
    height:643px;
    overflow:hidden;
    text-align:center;
    padding-top:120px;
}

</style>

<script>
//声明一个socket
var socket;
//初始化方法
function init(){
  var host = "ws://echo.websocket.org/";//声明host注意:是ws协议
  try{
    socket = new WebSocket(host);//新创建一个socket对象
    log('WebSocket - status '+socket.readyState);//将连接的状态信息显示在log
    socket.onopen    = function(msg){ log("Welcome - status "+this.readyState); };//监听打开连接
    socket.onmessage = function(msg){ log("Received: "+msg.data); };//监听当接收信息时触发匿名函数
    socket.onclose   = function(msg){ log("Disconnected - status "+this.readyState); };//关闭连接
  }
  catch(ex){ log(ex); }
  $("msg").focus();
}
//声明一个发送信息方法
function send(){
  var txt,msg;
  txt = $("msg");
  msg = txt.value;
  if(!msg){ alert("Message can not be empty"); return; }
  txt.value="";
  txt.focus();
  try{ socket.send(msg); log('Sent: '+msg); } catch(ex){ log(ex); }
}
//声明一个对开连接,关闭socket方法
function quit(){
  log("Goodbye!");
  socket.close();
  socket=null;
}

// 根据id获取DOM元素
function $(id){ return document.getElementById(id); }
//将信息显示在id为log的div中
function log(msg){ $("log").innerHTML+="<br>"+msg; }
//键盘事件(回车)
function onkey(event){ if(event.keyCode==13){ send(); } }
</script>

</head>
<body onload="init()">
<div id="imagebg">
    <div style="width:520px;text-align:left;margin:0px auto;color:#000;"> <a href="http://weibo.com/jackyo"><strong>新浪微博:Jack张</strong></a> </div>
    <br>
     <div id="log"></div>
     <input id="msg" type="textbox" onkeypress="onkey(event)"/>
     <button onclick="send()">发送</button>
     <button onclick="quit()">断开</button>

</div>
</body>
</html>

 

分享到:
评论

相关推荐

    HTML5 WebSocket权威指南

    《HTML5 WebSocket权威指南》是HTML5 WebSocket领域最权威的著作之一,它系统、全面地讲解了HTML5 WebSocket的各个方面,是Web开发人员和架构师学习WebSocket的最佳选择。书中讨论了基于WebSocket的架构师如何减少...

    HTML5WebSocket权威指南

    资源名称:HTML5 WebSocket权威指南内容简介:《HTML5 WebSocket权威指南》是HTML5 WebSocket领域最权威的著作之一,它系统、全面地讲解了HTML5 WebSocket的各个方面,是Web开发人员和架构师学习WebSocket的最佳选择...

    HTML5 websocket 聊天

    WebSocket是HTML5的一项重要技术,它为Web应用提供了全双工、低延迟的通信机制,使得浏览器和服务器之间可以实时交换数据,非常适合构建实时交互的聊天应用。在本项目中,我们将探讨如何利用HTML5的WebSocket特性,...

    The Definitive Guide to HTML5 WebSocket(权威指南)(免积分)

    《HTML5 WebSocket权威指南》是HTML5 WebSocket领域最权威的著作之一,它系统、全面地讲解了HTML5 WebSocket的各个方面,是Web开发人员和架构师学习WebSocket的最佳选择。书中讨论了基于WebSocket的架构师如何减少...

    构建实时Web应用(基于HTML5 WebSocket、PHP和jQuery)

    本文将深入探讨如何使用HTML5的WebSocket协议、PHP后端处理以及jQuery前端库来构建实时Web应用。WebSocket提供了一种全双工的通信机制,允许服务器与客户端之间进行连续的数据交换,而不仅仅是HTTP请求-响应模式。 ...

    Html5 WebSocket c++实例

    WebSocket是HTML5中引入的一种全双工通信协议,它允许Web应用和服务端进行持久性的双向通信,打破了传统的HTTP请求-响应模式。WebSocket协议基于TCP,提供了低延迟、高效率的数据传输方式,尤其适用于实时交互应用,...

    使用 HTML5 WebSocket 构建实时 Web 应用

    ### 使用 HTML5 WebSocket 构建实时 Web 应用 #### HTML5 WebSocket 概述与重要性 HTML5 WebSocket 是一种新兴的技术,它被设计用于在客户端(通常是浏览器)与服务器之间建立持久的双向通信连接。这项技术对于...

    使用 HTML5 webSocket API实现即时通讯的功能

    本工程为MyEclipse javaWeb工程,用于展示如何使用 HTML5 webSocket API实现即时通讯的功能。 本工程编码方式:UTF-8 功能说明: 1、本功能支持多人聊天,类似于http://www.htkaoyan.com/网站中的在线自询; 2、...

    Html5 WebSocket 基于c++ 的握手库

    WebSocket是HTML5中引入的一种新的网络通信协议,它旨在提供全双工、低延迟的通信方式,使得浏览器和服务器之间可以进行实时、双向的数据交换。相比于传统的HTTP协议,WebSocket允许在建立连接后持续保持连接状态,...

    构建实时Web应用:基于HTML5 WebSocket、PHP和jQuery(对应英文版)

    基于HTML5 WebSocket、PHP和jQuery的实时Web应用开发,提供了一种高效、实时地交换数据的方式。以下是相关的知识点详解: ### 实时Web应用概念 实时Web应用指的是那些能够实时响应用户行为或数据变化的应用,这类...

    HTML5 WebSocket权威指南 PDF电子书下载 带书签目录 高清完整版

    根据提供的文件信息,标题和描述中提到的知识点是关于HTML5和WebSocket,接下来将详细解释这两个知识点。 HTML5是一种网页制作技术,是HTML的第五次重大修订。它是万维网的核心语言、标准通用标记语言下的一个应用...

    jetty html5 websocket服务器

    Jetty HTML5 WebSocket服务器是一种基于Java的轻量级Web服务器,它支持HTML5的WebSocket协议,使得实时双向通信成为可能。WebSocket是Web应用程序中的一个关键技术,它允许客户端和服务器之间建立持久连接,从而实现...

    html5 websocket 建立连接通讯

    HTML5 Websocket是Web开发中的一个重大创新,它为实时、双向通信提供了强大的支持,使得浏览器与服务器之间能建立持久的连接,实现数据的即时双向传输。相较于传统的HTTP协议,Websocket具有更低的延迟和更高的效率...

    HTML5 WebSocket权威指南(带标签)

    HTML5 WebSocket权威指南(带标签) ;完整版并且带标签目录

    The Definitive Guide to HTML5 WebSocket 无水印原版pdf

    The Definitive Guide to HTML5 WebSocket 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看...

Global site tag (gtag.js) - Google Analytics