学习WebSocket(附: WebSocket + koa例子)
1. 什么是WebSocket?
WebSocket是一种在单个TCP连接上进行全双工通信的协议。
使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
2. 优点(参考维基)
WebSocket与HTTP对比图
客户端例子
const ws = new WebSocket('ws://localhost:8888'); ws.onopen = () => { console.log('WebSocket onopen'); } ws.onmessage = e => { console.log('WebSocket onmessage'); console.log('WebSocket message received:', e); console.log('WebSocket data received:', e.data); } ws.onclose = e => { console.log("WebSocket onclose"); };
- WebSocket.onopen: 连接成功后调用
- WebSocket.onmessage: 当接收到服务器消息时调用
- WebSocket.onclose: 连接关闭后调用
服务端例子(koa)
const Koa = require('koa'); const WebSocket = require('ws'); const app = new Koa(); const ws = new WebSocket.Server({port: 8888}); ws.on('connection', ws => { console.log('server connection'); ws.on('message', msg => { console.log('server receive msg:', msg); }); ws.send('Information from the server'); }); app.listen(3000);
运行结果
客户端
服务端
名词解释
- 握手: 一般创建WebSocket链接, 需要通过浏览器发出请求,服务器做出回应, 这个过程称为“握手”
参考链接
相关推荐
柳木木的IT 2020-11-04
joynet00 2020-09-23
wenf00 2020-09-14
蓝色深海 2020-08-16
wuychn 2020-08-16
取个好名字真难 2020-08-06
darylove 2020-06-26
shufen0 2020-06-20
Lovexinyang 2020-06-14
WangBowen 2020-06-14
firejq 2020-06-14
hjhmpl 2020-06-14
水痕 2020-06-07
guozewei0 2020-06-06
woniyu 2020-06-02
取个好名字真难 2020-06-01
guozewei0 2020-05-28
woniyu 2020-05-26