Skip to content

Latest commit

 

History

History
 
 

demo_chat

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

多节点精简版聊天室示例

  • 使用cherry引擎构建一个简单的多人聊天室程序
  • 推荐使用GoLand IDE
  • 本示例为h5客户端,使用pomelo-ws-client做为客户端sdk,连接类型为websocket,序列化类型为json

要求

  • GO版本 >= 1.17

操作步骤

克隆

调试

  • 推荐使用GoLand打开源码
  • 找到/examples/chat/目录
  • 启动nats服务3rd/nat-server/run_nats.bat
  • 启动master节点master/main.go
  • 启动log节点log/main.go
  • 启动room节点room/main.go
  • 访问http://127.0.0.1:80

测试

  • 从GoLand的Console面板可以看到,启动h5聊天室客户端的地址http://127.0.0.1:80
  • 客户端连接服务器的websocket地址为ws://:34590
  • 打开两个页面,在文本框中输入聊天内容并点击send按钮发送,两个页面将会收到聊天内容的广播

源码

  • log 目录为日志服节点(演示actor收发消息)
  • master 发现服务, master节点
  • protocol 通信协议,json序列化
  • room 房间服节点(为了测试方便,包含了网关和web客户端)
  • static目录为h5客户端静态文件,包含html和js版的客户端协议

配置

  • 涉及的环境配置profile文件在 /examples/config/profile-chat.json
  • profile-chat.json文件的注释通过@xxx表示,详见文件

关于actor model的使用

  • room/main.go文件可得知,节点启动时通过pomelo.NewActor("user")创建了一个user actor. 该actor用于管理客户端连接.
  • 通过app.AddActors(...)可得知,注册了roomactor,用于房间管理
  • 如果需要创建多个聊天房间,可以通过room的子actor实现