Skip to content

visolleon/gsocket

Repository files navigation

gsocket

管理WebSocket消息体的服务框架,很好的规范上报消息和下发消息的结构和管理,避免杂乱无章的消息头和消息体,多用于一些socket广播消息较多的场景,如:游戏、多人多频道聊天等;支持socket.io和websocket

  • 项目目录说明

    ├─docs           # 开发文档
    ├─log            # 运行日志
    ├─scripts        # 发布启动脚本
    │  └─init
    │      └─centos
    ├─src        # 源码
    │  ├─config         # 游戏配置文件
    │  ├─entity         # 下发消息体
    │  ├─hub            # 消息注册
    │  ├─message        # 上报消息体处理
    │  ├─player         # 用户信息在线缓存
    │  ├─utils          # 通用库
    │  ├─web            # WEB
    └─main.go  # 主程序入口
    
  • 通讯上报和下发处理

    • 上报消息:在message文件夹中定义Message,定义的类需继承IMessage接口,定义完成后,需要hub中注册消息
    // ChatMessage 聊天消息实体
    type ChatMessage struct {
        ToID    string `json:"toId"`    // 接收方的ID
        Content string `json:"content"` // 消息内容
    }
    
    // Instance 序列化
    func (msg *ChatMessage) Instance(data string) interface{} {
        json.Unmarshal([]byte(data), msg)
        return msg
    }
    
    // IsCheck 本消息是否需要验证
    func (msg *ChatMessage) IsCheck() bool {
        return true
    }
    
    // Execute 集成IMessage接口
    func (msg *ChatMessage) Execute(p logic.IPlayer) error {
        // todo something
        return nil
    }
    • 下发消息:在entity文件夹中定义entity消息,需要继承IEntity接口,为统一接口,因此每个下发的entity都需要硬编码定义消息头,防止后续版本API混乱。
    // ChatEntity 聊天发送消息
    type ChatEntity struct {
        PlayerID   string `json:"id"`      // 发送者ID
        PlayerName string `json:"name"`    // 发送者昵称
        Content    string `json:"content"` // 消息内容
    }
    
    // GetPrefix 获取消息头
    func (msg *ChatEntity) GetPrefix() string {
        return "chat"
    }

部署说明-Linux(CentOS)

  • 创建 gserveruser 用户

    $useradd -s /sbin/nologin gserveruser
  • 源码编译(开发模式, 部署请忽略)

    • Windows Build To Linux64:

        $build_linux64.bat
      
  • 配置启动脚本(CentOS):

    $chown -R gserveruser:gserveruser /home/gsocket
    $chmod 755 scripts/init/centos/gsocket
    $cp scripts/init/centos/gsocket /etc/rc.d/init.d/
    $chkconfig --add gsocket
  • 读写 权限

    $chmod 755 gsocket
  • 运行服务

    $service gsocket start

开发环境

Golang 1.6+ VSCode

LICENSE

MIT

About

管理WebSocket消息体的服务框架

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published