Python:Tornado 第三章:HTML5 WebSocket概念及应用:第三节:客户端编程

news/2024/11/9 12:05:35
上一篇文章: Python:Tornado 第三章:HTML5 WebSocket概念及应用:第二节:服务端编程
下一篇文章: Python:Tornado 第四章:Tornado网站部署:第一节:调试模式

由于WebSocket是HTML5的标准之一,所以主流浏览器的Web客户端编程语音JavaScript已经支持WebSocket的客户端编程。

客户端编程围绕着WebSocket对象展开,在JavaScript中可以通过如下代码初始化WebSocket对象:

var Socket=new WebSocket(url);

在代码中只需给WebSocket构造函数传入服务器的URL地址,比如http://mysite.com/point.

可以为该对象的如下事件指定处理函数以相应它们:

  • WebSocket.onopen:此事件发生在WebSocket链接建立时。
  • WebSocket.onmessage:此事件发生在收到了来自服务器的消息时。
  • WebSocket.onerror:此事件发生在通信过程中有任何错误时。
  • WebSocket.onclose:此事件发生在服务器的链接关闭时。

除了这些事件处理函数,还可以通过WebSocket对象的两个方法进行主动操作:

  • WebSocket.send(data):向服务器发送消息。
  • WebSocket.close():主动关闭现有链接。

客户端WebSocket编程实例程序如下:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>WebSocket</title>
</head>
<body>
<a href="javascript:WebSocketTest()">运行WebSocket</a>
<div id="messages" style="height: 200px;background: black;color:white"></div>

</body>
<script type="text/javascript">
    var messageContainer=document.getElementById("messages");
    function WebSocketTest() {
        if("WebSocket" in window){
            messageContainer.innerHTML="浏览器支持WebSocket";
            var ws=new WebSocket("ws://localhost:8888/websocket?Id=12345");
            ws.onopen=function () {
                ws.send("onopen")
            };
            ws.onmessage=function (evt) {
                var received_msg=evt.data;
                messageContainer.innerHTML=messageContainer.innerHTML+"<br/>收到的信息:"+received_msg;
            }
            ws.onclose=function () {
                messageContainer.innerHTML=messageContainer.innerHTML+"<br/> 连接关闭了";
            }


        }else{
            messageContainer.innerHTML="浏览器不支持WebSocket"
        }
    }
</script>
</html>

对上述代码解析如下:

  • 客户端页面主体是有两部分组成:一个Run WebSocket链接用于让用户启动WebSocket;另一个id=message的<div>标签用于显示服务器端的消息。
  • 使用JavaScript语句if("WebSocket" in window)可以判断当前浏览器是否支持WebSocket对象。
  • 如何浏览器支持WebSocket对象,则定义实例ws链接到服务器的WebSocket地址,并传入自己的标识符参数。然后通过js语法定义事件:onopen、onmessage、onclose的处理函数。除了在onopen事件中客户端向服务器用WebSocket.send()函数发送了消息,其余事件均只将事件结果显示在页面<div>标签中。

运行效果如下:

图片描述


http://www.niftyadmin.cn/n/3459264.html

相关文章

day7-mysql函数

MySQL 字符串函数 CONCAT 字符串 s1,s2 等多个字符串合并为一个字符串 select CONCAT(中国,t.userfrom,city) from newsp_201_user t&#xff1b; FORMAT 函数可以将数字字段进行格式化 "#,###.##", 将数字字段保留到小数点后 n 位&#xff0c;最后一位四舍五入。 SE…

EXEC SP_EXECUTESQL 和EXEC (@SQL) 不能在Function中使用

EXEC SP_EXECUTESQL SQL,SQL_RTN_PARAMS,OUT_ICOUNTICOUNT OUTPUT EXEC &#xff08;SQL&#xff09; 这两个函数不能在Function中调用&#xff0c;即使成功建立了&#xff0c; 运行时也报如下错误&#xff1a; 関数内から実行できるのは関数と一部の拡張ストアド プロシージ…

LeetCode 622——设计循环队列

1. 题目 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通…

你用过不写代码就能完成一个简单模块的组件么?

开篇四连问你是否懒得写普通的增删改查方法?你是否不喜欢代码生成插件的重复代码&#xff1f;你是否渴望一个没有冗余代码的项目&#xff1f;你是否渴望一行代码都不用写就能完成一个简单的模块&#xff1f;组件由来作为后端程序员&#xff0c;相信大家都写过以下几种代码&…

C++线程编程-FP编程和CSP编程

FP /*** 使用操作同步来简化代码 - 带有future的函数式编程&#xff08;FP&#xff09;* * 才有函数式的方法来编写程序&#xff0c;并非直接在线程之间共享数据&#xff1b;* 而是每个任务都可以提供它所需要的数据&#xff0c;并通过使用future将结果传播至需要它的线程* * …

冲刺2-1

团队开会总结上一阶段的失败之处&#xff0c; 也把第二阶段要完成的任务分配 大屏的空教室展示&#xff0c;课表的录入 转载于:https://www.cnblogs.com/1983185414xpl/p/11066618.html

入侵检测 - AIDE高级入侵检测平台

2019独角兽企业重金招聘Python工程师标准>>> AIDE(Advanced Intrusion Detection Environment)是一款针对文件和目录进行完整性对比检查的程序&#xff0c;它被开发成Tripwire的一个替代品。 AIDE如何工作 这款工具年纪也不小了&#xff0c;相对来同类工具Tripwire说…

C++线程编程-内存顺序

内存顺序模型 有六种内存顺序选项可以应用到原子类型上&#xff0c; memory_order_relaxed;memory_order_consume; memory_order_acquire;memory_order_release;memory_order_acq_rel; memory_order_seq_cst; 它们代表三种模型&#xff1a; 顺序一致 memory_order_seq_cst;获…