当前位置:  开发笔记 > 编程语言 > 正文

HTML5WebSockets基础使用教程

HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJAX请求即可与服务器端对话。今天彬Go将让大家通过Php环境的服务器端运行WebSocket,创建客户端并通过WebSockets协议发送和接收服务器端信息。什么是WebSockets?WebSockets是在一个(TCP)接口">
  •  \

     

    HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJAX请求即可与服务器端对话。今天彬Go将让大家通过Php环境的服务器端运行WebSocket,创建客户端并通过WebSockets协议发送和接收服务器端信息。

     

    什么是WebSockets?

      WebSockets是在一个(TCP)接口进行双向通信的技术,PUSH技术类型。同时WebSockets仍将基于W3C标准,目前为止,Chrome和Safari的最新版本浏览器已经支持WebSockets了。

    WebSockets将会替代什么?

      WebSockets可以替代Long Polling(PHP服务端推送技术),这是一个有趣的概念。客户端发送一个请求到服务器,现在,服务器端并不会响应还没准备好的数据,它会保持连接的 打开状态直到最新的数据准备就绪发送,之后客户端收到数据,然后发送另一个请求。这有它的好处:减少任一连接的延迟,当一个连接已经打开时就不需要创建另 一个新的连接。但是Long-Polling并不是什么花俏技术,他仍有可能发生请求暂停,因此会需要建立新的连接。

      一些AJAX应用使用上述技术-这经常是归因于低资源利用。

      试想一下,如果服务器在早晨会自启动并发送数据到那些希望接收而不用提前建立一些连接端口的客户端,这是一件多棒的事情啊!欢迎来到PUSH技术的世界!

    第一步:搞定WebSocket服务器

      这篇教程会把更多的精力放在客户端的创建而不是服务器端的执行等操作。

      我使用基于windows 7的XAMPP来实现本地运行PHP。phpwebsockets是PHP WebSocket服务器。(以我的经验这个版本存在一些小问题,我已对它做了些修改并上传源文件共享给大家)下面的这些不同版本也可以实现WebSocket,如果某个不能用,你可以试试其它版本或者继续看下面的教程。

      jWebSocket (Java)
    web-socket-ruby (ruby)
    Socket IO-node (node.js)

    启动Apache服务器

    \

    第二步:修改URLs和端口

      根据你之前的安装修改服务器,下面是setup.class.php中的例子:

    1
    2
    3
    4
    public function __construct($host='localhost',$port=8000,$max=100)  
    {  
        $this->createSocket($host,$port);  
    }

      浏览文件并在适当情况下进行更改。

    第三步:开始创建客户端

      下面来创建基本模板,这是我的client.php文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
      
    <html>  
    <head>  
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>  
      
    <title>WebSockets Client</title>  
      
    </head>  
    <body>  
    <div id="wrapper">  
      
        <div id="container">  
      
            <h1>WebSockets Client</h1>  
      
            <div id="chatLog">  
      
            </div>  
            <p id="examples">e.g. try 'hi', 'name', 'age', 'today'</p>  
      
            <input id="text" type="text" />  
            <button id="disconnect">Disconnect</button>  
      
        </div>  
      
    </div>  
    </body>  
    </html>&#8203;

      我们已经创建里基本模板:一个chat log容器,一个input输入框和一个断开连接的按钮。

    第四步:添加一些CSS

      没什么花俏代码,只是处理一下标签的样式。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    body {  
        font-family:Arial, Helvetica, sans-serif;  
    }  
    #container{  
        border:5px solid grey;  
        width:800px;  
        margin:0 auto;  
        padding:10px;  
    }  
    #chatLog{  
        padding:5px;  
        border:1px solid black;  
    }  
    #chatLog p {  
        margin:0;  
    }  
    .event {  
        color:#999;  
    }  
    .warning{  
        font-weight:bold;  
        color:#CCC;  
    }

    第五步:WebSocket事件

    首先让我们尝试并理解WebSocket事件的概念:

    \

    WebSocket事件:
    我们将使用三个WebSocket事件:
    onopen: 当接口打开时
    onmessage: 当收到信息时
    onclose: 当接口关闭时

    我们如何来实现呢?
    首先创建WebSocket对象

    1
    var socket = new WebSocket("ws://localhost:8000/socket/server/startDaemon.php");


    推荐阅读
    • 深入浅出解析HTTP协议的核心功能与应用
      前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
    • 为何Serverless将成为未来十年的主导技术领域?
      为何Serverless将成为未来十年的主导技术领域? ... [详细]
    • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
    • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
    • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
    • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
    • 深入解析Tomcat:开发者的实用指南
      深入解析Tomcat:开发者的实用指南 ... [详细]
    • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
    • 构建顶级PHP博客系统:实践与洞见
      构建顶级PHP博客系统不仅需要扎实的技术基础,还需深入理解实际应用需求。本文以Zend Studio为开发环境,MySQL作为数据存储,Apache服务器为运行平台,结合jQuery脚本语言,详细阐述了从环境搭建到功能实现的全过程,分享了开发PHP博客管理系统的宝贵经验和实用技巧。 ... [详细]
    • Apache Maven 3.5.0 版本的发布带来了多项重要特性和性能优化。该版本不仅改进了构建过程的效率,还增强了对复杂项目结构的支持。通过引入新的依赖解析机制和优化的插件系统,Maven 3.5.0 在提升用户体验的同时,也确保了更高的稳定性和兼容性。此外,该版本还修复了多个已知问题,进一步提升了整体的可靠性和安全性。 ... [详细]
    • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
    • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
    • 在使用关系型数据库时,通常需要通过用户名和密码进行身份验证才能访问数据。然而,MongoDB默认情况下并不强制要求这种身份验证机制,使得用户无需凭据即可访问并执行各种操作。虽然这一设计简化了初学者的上手过程,但也带来了显著的安全风险。为了提升MongoDB的连接安全性,本文将探讨多种策略与实践,包括启用身份验证、配置网络访问控制、加密通信以及定期审计安全设置,以确保数据库的安全性和数据的完整性。 ... [详细]
    • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
    • 为了满足读者需求,InfoQ中文站每周精选并回顾过去的技术新闻,确保重要资讯不会被忽视。本周精选涵盖了多个领域的关键进展,帮助读者在短时间内掌握重要的技术动态和趋势。 ... [详细]
  • author-avatar
    浅笑二度
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有