LockGit / gochat

goim server write by golang !🚀
http://45.77.108.245:8080
MIT License
2.77k stars 472 forks source link

timing.png中第5步是怎么实现的? #40

Closed jiuyuan-light closed 2 years ago

jiuyuan-light commented 2 years ago

1、本地使用./gochat.bin -module logic &命令部署。 2、问题:在web界面登陆成功后,“在线人数”为0,发送消息后,无法回显在web界面。 3、已定位到connect_tcp层中PushRoom中b.Room(1)为nil,导致无法继续执行。 func (b *Bucket) PushRoom(ch chan *proto.PushRoomMsgRequest) { for { var ( arg *proto.PushRoomMsgRequest room *Room ) arg = <-ch if room = b.Room(arg.RoomId); room != nil { room.Push(&arg.Msg) } } } 4、继续找给b.Room赋值的地方,发现在tcpserver接收连接后,但是listener.AcceptTCP阻塞,一直没有tcpclient连接。不知道tcpclient如何发起connect,这个对应timing.png中第5步?

LockGit commented 2 years ago

web界面用的是websocket建立长链接。。connect_tcp 是给客户端设备使用tcp建立长链接用的,对于web的connect层是 ./gochat.bin -module connect_websocket,只用关注ws部分,不用关注tcp部分

jiuyuan-light commented 2 years ago

web界面用的是websocket建立长链接。。connect_tcp 是给客户端设备使用tcp建立长链接用的,对于web的connect层是 ./gochat.bin -module connect_websocket,只用关注ws部分,不用关注tcp部分

多谢大佬解答。还有这里的客户端指的是Android/Ios还是特指gochat客户端?目前还没有实现使用tcp的gochat客端户吧?

LockGit commented 2 years ago

也可以这么认为,tcp 和 ws 是两种不同的形式

jiuyuan-light commented 2 years ago

也可以这么认为,tcp 和 ws 是两种不同的形式

好的,多谢。