Skip to content

Latest commit

 

History

History
58 lines (57 loc) · 2.08 KB

目录.md

File metadata and controls

58 lines (57 loc) · 2.08 KB

目录

  • 1、项目说明
    • 1.1 goWebSocket
    • 1.2 项目体验
  • 2、介绍webSocket
    • 2.1 webSocket 是什么
    • 2.2 webSocket的兼容性
    • 2.3 为什么要用webSocket
    • 2.4 webSocket建立过程
  • 3、如何实现基于webSocket的长连接系统
    • 3.1 使用go实现webSocket服务端
      • 3.1.1 启动端口监听
      • 3.1.2 升级协议
      • 3.1.3 客户端连接的管理
      • 3.1.4 注册客户端的socket的写的异步处理程序
      • 3.1.5 注册客户端的socket的读的异步处理程序
      • 3.1.6 接收客户端数据并处理
      • 3.1.7 使用路由的方式处理客户端的请求数据
      • 3.1.8 防止内存溢出和Goroutine不回收
    • 3.2 使用javaScript实现webSocket客户端
      • 3.2.1 启动并注册监听程序
      • 3.2.2 发送数据
    • 3.3 发送消息
      • 3.3.1 文本消息

        • 接收前端消息
          user_controller.go
          SendMessage() 和 SendMessageAll()
          同时在这里将消息入库
        • 转发前端消息 user_srv.go, 在这里对一些数据进行封装成data,格式为 msg_model.go
          SendUserMessage() 和 SendUserMessageAll()
          SendUserMessageAll()在这里判断是本地转发还是RPC转发
          本地转发 : client_manager.go AllSendMessages()
          rpc转发: grpc_client.go
          client.go 真正发送
      • 3.3.2 图片和语言消息

  • 4、goWebSocket 项目
    • 4.1 项目说明
    • 4.2 项目依赖
    • 4.3 项目启动
  • 5、webSocket项目Nginx配置
    • 5.1 为什么要配置Nginx
    • 5.2 nginx配置
    • 5.3 问题处理
  • 6、压测
    • 6.1 Linux内核优化
    • 6.2 压测准备
    • 6.3 压测数据
  • 7、如何基于webSocket实现一个分布式Im
    • 7.1 说明
    • 7.2 架构
    • 7.3 分布式系统部署
  • 8、回顾和反思
    • 8.1 在其它系统应用
    • 8.2 需要完善、优化
    • 8.3 总结
  • 9、参考文献