首页 > 其他分享 >WebSocket的使用

WebSocket的使用

时间:2023-06-17 10:11:31浏览次数:38  
标签:function WebSocket 函数 ws 关闭 使用 连接

例子:

// WebSocket构造函数,创建WebSocket对象
let ws = new WebSocket('ws://localhost:8888')

// 连接成功后的回调函数
ws.onopen = function (params) {
  console.log('客户端连接成功')
  // 向服务器发送消息
  ws.send('hello')
};

// 从服务器接受到信息时的回调函数
ws.onmessage = function (e) {
  console.log('收到服务器响应', e.data)
};

// 连接关闭后的回调函数
ws.onclose = function(evt) {
  console.log("关闭客户端连接");
};

// 连接失败后的回调函数
ws.onerror = function (evt) {
  console.log("连接失败了");
};

// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,这样服务端会抛异常。
window.onbeforeunload = function() {
    ws.close();
}
  1. readyState 属性返回实例对象的当前状态
    CONNECTING:值为0,表示正在连接。
    OPEN:值为1,表示连接成功,可以通信。
    CLOSING:值为2,表示连接正在关闭。
    CLOSED:值为3,表示连接已经关闭,或者打开连接失败。

  2. onopen 连接成功后的回调函数
    当WebSocket 的连接状态readyState 变为1时调用,这意味着当前连接已经准备好发送和接受数据。

  3. onmessage 从服务器接受到信息时的回调函数
    message 事件会在 WebSocket 接收到新消息时被触发

  4. onclose 连接关闭后的回调函数
    onclose 在 WebSocket 连接的readyState 变为 CLOSED或3时被调用,它接收一个名字为close的 CloseEvent 事件

  5. onerror 连接失败后的回调函数
    当websocket的连接由于一些错误事件的发生 (例如无法发送一些数据) 而被关闭时,一个error事件将被引发。

  6. send() 对要传输的数据进行排队
    send() 方法将需要通过 WebSocket 链接传输至服务器的数据排入队列,并根据所需要传输的 data bytes 的大小来增加 bufferedAmount 的值

  7. close() 关闭当前链接
    close() 方法关闭 WebSocket 连接或连接尝试(如果有的话)。如果连接已经关闭,则此方法不执行任何操作。

作者:张勇辉

标签:function,WebSocket,函数,ws,关闭,使用,连接
From: https://www.cnblogs.com/DTCLOUD/p/17487092.html

相关文章

  • CMake个人理解和使用
    前言CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的项目中,开发人员可以根据自己的喜好来使选择IDE,......
  • 【Azure 环境】使用az login登录遇见OSError: [WinError -2146893813] : '' 错误
    azlogin|Decryptionfailed:[WinError-2146893813]Keynotvaidforuseinspecifiedstate|msal_extensions.persistence:DPAPIerrorlikelycausedbyfilecontentnotpreviouslyencrypted.Appdevelopershouldmigratebycallingsave(......
  • Navicat For Redis 的学习与使用
    NavicatForRedis的学习与使用背景周末在家看了几个公众号:说到Navicat16.2已经有了Redis的客户端.想着前段时间一直在学习Redis,但是没有GUI的工具,所以想可以试用一下.这里简单总结和记录一下最新版的下载地址#最新版的集合版本premium里面包含多种数据库的连接工具......
  • php交换两个变量的值,不使用第三个变量
    参考https://www.php.net/manual/zh/function.list.php代码#第一种PHP4,PHP5,PHP7,PHP8#像array()一样,这不是真正的函数,而是语言结构。list()可以在单次操作内为一组变量赋值。字符串不能解包且list()表达式不能完全为空。list($a,$b)=[$b,$a];#PHP......
  • 华为手机使用第三方桌面
    手里有个荣耀v10,系统为EMUI9。安装了极简桌面,准备给老人用。但是华为从EMUI9开始,禁用了第三方桌面。解决办法:打开开发者选项-USB调试,连接电脑;在手机上安装小黑屋。可以在这里下载,https://www.coolapk.com/apk/web1n.stopapp,然后adbinstallxxx.apk打开小黑屋,选择麦......
  • Centos6无法使用yum问题
    原因一:网络连接问题,检查是否可以连接外部网络,可以使用ping www.baidu.com检查网络连接是否正常(很少概率)原因二:Centos6系统不再维护,所以关于Centos6的安装包基本都被移除了解决办法:改变源,改为国内的阿里镜像源依次执行下面五行命令即可1、sed-i"s|enabled=1|enabled=0|g"......
  • 【web开发】使用Trait解决PHP面向对象中类只支持单继承的限制
    前言众所周知,PHP的面向对象和Java一样,类只支持单继承,即是一个类只能继承自一个父类,不能存在多个父类,这也很好理解,就像现实的人类社会一样,儿子继承自你的父亲,父亲继承自祖父。。。,但是在实际开发中很多时候我们想像c++一样使用多重继承。奈何PHP只能使用单继承,在Trait出现之前,在PHP......
  • 【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实
    异常传播有时候,您可能需要重新抛出捕获到的异常。这种情况通常发生在捕获到Error或RuntimeException时,因为您可能没有预料到这些异常,但在声明捕获Throwable和Exception时,它们也被包含在内了。为了解决这个问题,Guava提供了多种方法来判断异常类型并重新抛出异常。例如:try{......
  • 新必应不能使用bingchat的解决方法
    前提:科×上网登录微软账号清除浏览器中bing.com的cookies解决方案如下:退出BingRewards计划:https://rewards.bing.com/optout,请注意退出计划会清除积分重新加入BingRewards计划:https://rewards.bing.com再次申请加入新版必应(https://www.bing.com/new),即......
  • 使用hashicorp Raft开发分布式服务
    使用hashicorpRaft开发高可用服务开发raft时用到的比较主流的两个库是EtcdRaft和hashicorpRaft,网上也有一些关于这两个库的讨论。之前分析过etcdRaft,发现该库相对hashicorpRaft比较难以理解,其最大的问题是没有实现网络层,实现难度比较大,因此本文在实现时使用了hashicorpRaf......