首页 > 其他分享 >前端建立WebSocket连接

前端建立WebSocket连接

时间:2023-11-13 11:13:13浏览次数:28  
标签:function WebSocket 前端 ws webSocket data 连接

Web Sockets是H5提供的在web应用程序中客户端与服务器端之间进行的非HTTP的通信机制。 当服务器想向客户端发送数据时,可以立即将数据推送到客户端的浏览器中,无需重新建立连接。只要客户端有一个被打开的socket(套接字)并且与服务器建立了连接,服务器就可以把数据推送到这个socket上,服务器不再需要轮询客户端的请求,从被动转为了主动。
ws://wss://前缀分别表示WebSocket连接和安全的WebSocket连接。

if(window.WebSocket){ //进行检测,确保浏览器支持WebSocket
    var webSocket=new WebSocket("ws://localhost:8005/socket");
}

WebSocket对象有三个事件:openclosemessage。当连接建立时触发open事件,当收到消息时触发message事件,当WebSocket连接关闭时触发close事件。

webSocket.onopen=function(event)
{
    //开始通信时的处理
    webSocket.send("Hello WebSocket!");
}
webSocket.onmessage=function(event)
{
    var data=event.data;
}
webSocket.onclose=function(event)
{
    //结束通信时的处理
}
webSocket.close();

另外,还可以通过读取readyState的属性值来获取WebSocket对象的状态。readyState属性存在以下几种属性值:

  • CONNECTING(数字值为0),表示正在连接。
  • OPEN(数字值为1),表示已建立连接。
  • CLOSING(数字值为2),表示正在关闭连接。
  • CLOSED(数字值为2),表示已关闭连接。
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket</title>
</head>

<body>
<h1>DFC WS</h1>
<script>
let ws = null;
let timerId = null;
const heartbeatInterval = 30 * 60 * 1000; // 心跳检测时间间隔,单位为毫秒
let heartbeatTimer = null;
let status = false

function connect() {
ws = new WebSocket("ws://localhost:8005/socket");
            ws.onopen = function (e) {
status = true
sketchup.onopen(e.data);
startHeartbeat();
};
ws.onmessage = function (e) {
const data = JSON.parse(e.data);
let type = data.type || '';
console.log(data);
switch (type) {
case 'init':
break;
case 'say':
break;
case 'ping':
console.log('ping');
ws.send('ping')
break;
default:
console.log(data);
}
};
ws.onclose = function (e) {
status = false
stopHeartbeat();
timerId = setTimeout(connect, 10 * 1000);
}
ws.onerror = function (e) {
}
}

// 发送心跳消息
function sendHeartbeat() {
console.log('send ping');
ws.send('ping');
}

// 开始心跳检测
function startHeartbeat() {
heartbeatTimer = setInterval(() => {
sendHeartbeat();
}, heartbeatInterval);
}
// 停止心跳检测
function stopHeartbeat() {
clearInterval(heartbeatTimer);
}

connect();

</script>
</body>

</html>

 

标签:function,WebSocket,前端,ws,webSocket,data,连接
From: https://www.cnblogs.com/muxiyeyu/p/17828697.html

相关文章

  • 微前端 micro-app
    微前端micro-app                           引用:https://www.jianshu.com/p/65b81afc0cb5 ......
  • 安卓-SSTP客户端连接教程
    下载SSTP通用连接客户端下载地址:http://cdn.xzpaladin.com/down/sstppro.apk下载后安装进安卓设备中并运行点击右下角的+添加配置选择新建SSTP配置文件名称可以随意填写点击远程服务器点击右下角的+添加服务器地址服务器查询:http://www.pldip.com/city**注意:根据购买的产品不同......
  • 安装arch时用wpa_supplicant连接隐藏WPA2 wifi
    1.vim/etc/wpa_supplicant/wpa_supplicant.conf#创建/etc/wpa_supplicant/wpa_supplicant.conf目录并编辑wpa_supplicant.conf文件2.在wpa_supplicant.conf文件写入network={scan_ssid=1proto=WPA2key_mgmt=WPA-PSKssid="你的wifi名字"psk="你的wifi密码"}以``下是注释......
  • 通过cpolar实现外网ssh远程连接linux
    现在我有个想法,就是希望通过外网能够远程连接到我的开发板。这里我们就需要使用到一种技术,内网穿透。内网穿透是一种将内部网络中的设备通过外网进行访问的技术。在linux系统中,实现内网穿透有多种方式,其中最常见的方法是使用ngrok和frp。以frp为例,frp是一个专注于内网穿透的高性......
  • Windows环境下ADB调试——无线连接设备Wifi adb
    一、有线连接第一次连接设备,需要先用有线连接一次。然后运行查看设备:adbdevices如图,第一次没有连接设备,第二次连接了。(安卓设备需要已经开启开发者模式)二、设置tcp端口运行代码:adbtcpip5555 三、无线连接打开安卓设备,查看IP地址。运行代码:adbconnect10.2......
  • Win10系统共享文件解除连接数限制
    一.方法1、首先在win10系统中点击开始菜单,选择控制面板;2、点击系统和安全;3、点击管理工具;4、点击进入,本地安全策略进行操作设置;5、点击进入,安全设置-本地策略-安全选项”里面的“交互式安全:可缓冲保存的前次登陆个数”,默认的共享最大连接数为20台;6、超过数量的电脑将会被提示无法共......
  • 本机Java连接虚拟机的redis相关
    1、代码Jedisjedis=newJedis("192.168.88.151",6379);2、开启6379端口//查看6379端口是否开启--yes是开启;no是关闭firewall-cmd--query-port=6379/tcp//开启6379端口firewall-cmd--zone=public--add-port=6379/tcp--permanent//重启使生效firewall-cmd--reloa......
  • JavaScript的数据交换格式XML和JSON的解析------前端
    XML和JSON数据的解析<!DOCTYPEhtml><!--这是HTML的注释--><htmllang="en"id="myHtml"> <head> <!--这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码--> <metacharset="UTF-8"> <metaname="viewport&quo......
  • mysql ssh隧道连接数据库报错
    1.ssh隧道连接数据库报错:80070007:SSHTunnel:Serverdoesnotsupportdiffie-hellman-group1-sha1forkeyexchange①./etc/ssh/sshd_config最下面加入下面配置:KexAlgorithmsdiffie-hellman-group1-sha1,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp3......
  • Java基础、MySQL数据库、Web前端
    三、简答题(共10题,共30分)1、请写出CSS的6种选择器,并举例?l 标签选择器:a、li、div、table等等l 类选择器:.nav、.itemsl id选择器:#logo、#item1l 通配符选择器:*l 后代选择器:ulli、divaspan等l 并集选择器:li,div,h1l 交集选择器:li.item、input.username等2、将图片展示在网页......