Skip to content

基于websocket的网关层,支持php开发websocket业务。

License

Notifications You must be signed in to change notification settings

buexplain/netsvr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

netsvr

简介

netsvr

netsvr主要负责:

  1. 承载客户端的websocket连接,并支持存储连接的:业务系统内唯一id、订阅的主题、连接登录后的session信息
  2. 承载业务进程的tcp连接
  3. 接收客户端连接发来的数据,并将数据转发给业务进程
  4. 接收业务进程发来的数据,并按数据中包含的cmd指令:或转发给客户端连接,或自己处理并返回给业务进程

netsvr具体能干嘛:

netsvr能起到桥梁作用,让你的业务进程和客户端之间进行通信,从而实现:

  • 你的业务进程:以单播、批量单播、组播、发布、批量发布、广播等形式,将数据主动下发给客户端连接
  • 你的客户端:订阅主题的数据、取消订阅主题、发送数据给服务端、接收服务端下发的数据

更多功能请阅读:业务进程与netsvr进程的交互协议

如何使用netsvr

具体的使用方式,请参考具体的sdk:

业务进程与netsvr之间的TCP数据包边界处理

  • 采用固定包头 + 包体协议包头是一个uint32,表示接下来的包体有多长。
  • 包头表示的长度,不包含包头自己的4字节
  • 包头采用大端序,包体是protobuf编码的数据。
  • 心跳字符不要进行protobuf编码,直接发送数据即可。

本项目代码结构介绍

  • netsvr.go 是netsvr程序的启动入口。
  • business.go 是为了测试netsvr程序的业务进程启动入口。
  • stress.go 是为了压测netsvr程序的压测进程启动入口,它可以大规模的向网关发起websocket连接。
  • build.sh 是编译脚本,把项目clone下来后,直接跑它(依赖go环境),会自动编译出Windows、Linux、Mac三端的netsvr程序、业务进程程序、压测进程程序。

启动顺序是:netsvr --> 业务进程 --> 压测进程