本文始发于我的个人网站:https://www.jianfengke.com/
WebSocket是啥
Websocket是一个持久化的网络通信协议,可以在单个 TCP 连接上进行全双工通讯,没有了Request和Response的概念,两者地位完全平等,连接一旦建立,客户端和服务端之间实时可以进行双向数据传输.
WebSocket跟Http区别与联系
- HTTP是非持久的协议,客户端想知道服务端的处理进度只能通过不停地使用 Ajax进行轮询或者采用 long poll 的方式来,但是前者对服务器压力大,后者则会因为一直等待Response造成阻塞
- websocket是独立于HTTP的一种协议,但是websocket必须依赖 HTTP 协议进行一次握手(在握手阶段是一样的),握手成功后,数据就直接从 TCP通道传输,与 HTTP 无关
WebSocket应用
得益于Websocket全双工通信机制,WebSocket可以做弹幕、消息订阅、多玩家游戏、协同编辑、股票基金实时报价、视频会议、在线教育、聊天室等应用实时监听服务端变化。
快速上手WebSocket用法,包括客户端与服务端
首先,我们想搞个这样的东西:
- 客户端(前端页面,可多个,代表不同用户)与服务器建立socket连接,建立连接时客户端及服务端都有反应(如输出:加入websocket连接)
- 客户端发送消息,服务端接受到信息后,发送特定的消息返回对应客户端
- 任一客户端发送消息,服务端接受到信息后,广播到所有客户端
首先我们来实现功能1
我们借助的工具很简单,一个socket包: ws
我们从头安装来应该是这样:
新建文件夹,如命名socket-test,进入该目录
mkdir socket-test
cd socket-test