了解websocket和简单示例

11 篇文章 0 订阅
6 篇文章 0 订阅
WebSocket协议是一种允许服务器与客户端实时通信的网络协议,解决了HTTP协议的客户端单向请求问题。通过建立持久连接,WebSocket避免了频繁的HTTP请求,提高了数据传输效率。本文提供了一个简单的客户端和服务端WebSocket实现示例,展示了如何创建连接、监听事件、发送和接收消息,以及关闭连接。
摘要由CSDN通过智能技术生成
什么是websocket

websocket是一种网咯通信协议,它允许服务器主动向客户端发送消息,客户端也可以主动向服务器发送消息。

websocket解决了什么问题

http协议是一个由客户端发起请求再到服务端响应的过程,并且通信只能由客户端发起。长久以来人们想要关注服务器实时的数据,就只能通过“轮询”的方式让浏览器隔个几秒就发送一次请求。但这样显然会浪费服务器资源,而且也不是实时的数据。

于是websocket应运而生,一旦建立websocket链接之后,之后的交互数据都不需要再发送HPPT request了。这就好比客户端和服务端已经拨通的电话,之后的交流省去的反复拨打电话的过程。

客户端使用websocket简单示例
// 通过构造函数websocket返回一个新的websocket对象
// url 必须是一个websocket协议的绝对路径,稍后会讲服务端的代码
const ws = new WebSocket('ws://localhost:3000');

// 事件:当前连接已经准备好了,readyState = 1 时调用
ws.addEventListener('open', (event) => {});
// 事件:接收来自服务器的消息
ws.addEventListener('message', (message) => {});
// 方法:发送消息给服务器
ws.send('Hello Websocket');
// 方法:关闭链接 参数详见官方文档
ws.close(code,reason);
服务端实现websocket
// 服务端的实现没有任何语言的限制 只要符合websocket协议既可
// 这里使用的是nodejs-websocket 现成的库非常适合不懂网络协议的小白练手

// 安装 npm install nodejs-websocket

const ws = require('nodejs-websocket');

const server = ws.createServer((conn) => {
    console.log('new connection');
    conn.on('text', (Str) => {
        console.log('服务端接收数据:', Str);
        setTimeout(() => {
            conn.sendText('服务器给你发来消息', () => {
                console.log('成功发送')
            })
        }, 2000)
    })
    conn.on('error', (err) => { 
        console.log(err)
    })

}).listen(3000)

// 客户端 ---------------------------------------
const ws = new WebSocket('ws://localhost:3000');

ws.addEventListener('open', (event) => {
            console.log(event)
            ws.send('Hello Server')
        })
ws.addEventListener('message', (msg) => {
            console.log(msg)
        })

运行代码不出意外你将看到
在这里插入图片描述
服务端
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值