kk-ws
v2.1.11
Published
这是一个包含客户端和服务端的WebSocket框架
Downloads
58
Readme
KK-WS
这是一个包含客户端和服务端的WebSocket框架
GETTING STARTED
npm install kk-ws --save
const Server = require('kk-ws')
const server = new Server({
withClient:true,
encrypt:true //这里设置之后websocket会被加密,开发过程可以设为false
})
server.on("connection",socket=>{
socket.on('news',(content,callbackFn)=>{
socket.emit("news",content)
})
})
server.listen(4400)
目标 (能替代socket.io的适合我们公司的websocket框架)
打开示例
打开终端: npm test
打开终端: node test/index.js
浏览器打开 http://localhost:1234 打开F12
原理
连接
客户端首先通过http获取sid
客户端通过获取到的sid,连接websocket
如果webosocket连接不上,会走两条连接,send走post,receive走long polling (不做了,数据传输比较频繁的情况下,服务器压力会很大)
为什么用http获取sid这一步,websocket的连接建立是比较粗暴的,连接建立失败基本上就是1006错误,不会透露错误原因,通过http建立预连接可以在出错时得到详细的错误信息
服务器
服务器端实现了http和websocket两种的链接方式
服务器分两种模式独立运行模式,和模块运行模式
服务器支持消息录制,根据channel区分
独立模式
- 同机房的多服务器模型,使用redis的publish subscribe机制,向服务器分发
模块运行模式
connector模块,专门用于建立websocket连接,广播和单播,不处理业务逻辑(可以多服务器)
backend模块,单服务器运行,通过 RabbitMQ/websocket 与connector模块建立,收到connector的消息,处理后返还给connector