IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> js 利用websocket 做即时通信 -> 正文阅读

[网络协议]js 利用websocket 做即时通信

WebSocket的定义

WebSocket是html5提供的一种在单个TCP连接上进行双向通信的协议,解决了客户端和服务端之间的实时通信问题。浏览器和服务器只需完成一次握手,两者之间就可以创建一个持久性的TCP连接,此后服务器和客户端通过此TCP连接进行双向实时通信。

1、创建一个socket.js文件,用于多个地方调。

const URL = "ws://ws.xxxxxx.com:2000"
function SocketTask() {
    //socket连接状态
    let socketOpen = false
    let ws = new WebSocket(URL);
    /**
     * 打开ws连接
     * 
    */
    this.open = (callback) => {
        ws.onopen = () => {
            this.socketOpen = true
        }
    }

    /**
     * 发送数据
     * **/
    this.send = (data) => {
        ws.send(JSON.stringify(data))
    }
    
    /**
     * 接收数据
     * @param callback callback
     * **/
    this.receiveMsg = (callback) => {
        ws.onmessage =  (e) => {  
            callback(e)
        }
    }
    
    /**
     * 关闭ws
     * **/
    this.close = () => {
        ws.onclose = () => {
            //当客户端收到服务端发送的关闭连接请求时,触发onclose事件
            this.socketOpen = false
        }
    }
    
}

2、引用
3、使用websocket

//ws
let socketTask = null
window.onload = () => {
	initSocket()
}
//初始化socket
function initSocket() {
	socketTask = new SocketTask()
	socketTask.open()
	handleSend()
	receiveMsg()
}

/**
 * 发送数据
 * **/
function handleSend() {
	let data = {id: '1'}
	if(socketTask.socketOpen) {
		socketTask.send(data)
	}else{
		setTimeout(() => {handleSend()}, 1000) 
	}
}

/**
 * 接收数据
 * **/
function receiveMsg () {
	socketTask.receiveMsg((res) => {
		console.log('res:', res)
	})
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:58:44  更:2021-11-30 15:59:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:21:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码