Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

想问一下task层中PushChannel和PushParams这两个结构的问题 #49

Open
UsherFall opened this issue Feb 25, 2023 · 11 comments
Open

Comments

@UsherFall
Copy link

发现Push消息到对应用户的时候用到了如题的两个结构,而Push消息到room中却没有用到,那么这两个结构的意义是啥呢?为什么Push消息到用户的时候不要像PushRoom那样比较直接地去调用connect层服务呢?刚刚接触web,问题傻的话还请见谅。。。

@LockGit
Copy link
Owner

LockGit commented Feb 25, 2023

点对点通信的时候,起多个goroutine来推提高效率而已,放在一个goroutine里其实也行

pushChannel[rand.Int()%config.Conf.Task.TaskBase.PushChan] <- &PushParams{
			ServerId: m.ServerId,
			UserId:   m.UserId,
			Msg:      m.Msg,
		}

@UsherFall
Copy link
Author

UsherFall commented Feb 26, 2023

@LockGit 感谢!还有一个问题是,readme里面给的在线demo要怎么登录啊,好像并没有看到登录选项,在线人数也一直为0

@LockGit
Copy link
Owner

LockGit commented Feb 26, 2023

打开后右上角有登录选项,账号可以自己注册 也可以用readme中的

@UsherFall
Copy link
Author

@LockGit
Copy link
Owner

LockGit commented Feb 26, 2023

浏览器兼容性?可以截图看看,mac系统下看到的就是和文档中截图的一样

@UsherFall
Copy link
Author

Snipaste_2023-02-26_17-14-57
浏览器是edge,刷新页面的时候那个登录注册的选项会闪一下然后就消失,用chrome也是这样

@LockGit
Copy link
Owner

LockGit commented Feb 26, 2023

那应该就是在windows下的前端页面bug

@LockGit
Copy link
Owner

LockGit commented Feb 26, 2023

前端是这个 https://github.com/LockGit/gochat-ui ,看能否帮忙修复下前端兼容性,提个pr

@UsherFall
Copy link
Author

应该是,我clone下来运行也是同样的bug
不太懂前端,现在准备实习也没啥精力去学。。这任务还是交给别人吧

@UsherFall
Copy link
Author

UsherFall commented Feb 27, 2023

@LockGit 大佬。。提个报错问题,是关于tcp服务方面的,我是linux环境下一层层启动运行的,启动后运行stickpackage_test.go里面的Test_TcpClient,然后按流程完成了authToken认证,到了要发送room消息的时候发生错误,显示的是他在api层里call logic的PushRoom的时候有指针问题,然后panic,connect层退出
LogicRpcClient.Call(context.Background(), "PushRoom", req, reply)

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0xc3ce19]
goroutine 233 [running]:
chat/api/rpc.(*RpcLogic).PushRoom(0xc0001fda00?, 0xc0005a85b0)
/home/usher/chat/api/rpc/rpc.go:111 +0xb9
chat/connect.(*Connect).readDataFromTcp(0xc00029e090, 0xc0004b00e0, 0xc000533c40)
/home/usher/chat/connect/server_tcp.go:198 +0x6f9
created by chat/connect.(*Connect).ServeTcp
/home/usher/chat/connect/server_tcp.go:93 +0x17d

但同时看到task层,它是有从redis队列中取到消息的,只是redisMsg里面的Msg切片为空,然后在call connect的时候报错

logrus.Infof("broadcastRoomToConnect rpc  %v", rpc)
logrus.Infof("pushRoomReq: %v", pushRoomMsgReq)
rpc.Call(context.Background(), "PushRoomMsg", pushRoomMsgReq, reply)
logrus.Infof("reply %s", reply.Msg)

INFO[0019] push msg info 1,op is:3
INFO[0019] broadcastRoomToConnect rpc &{2 0 map[] {{0 0} {} map[] 0} ConnectRpc { 3 60000000000 /rpcx 1000000000 0 10000000 3 0 false 0 30000000000 60000000000 false} {{0 0} 0 0 0 0} map[tcp@0.0.0.0:6914:] map[] 0xc000148820 0xc00012f608 {{0 0} map[]} false 0xc00012f620 }
INFO[0019] pushRoomReq: &{1 {1 3 1630203259832504320 []}}
2023/02/27 21:48:39 client.go:744: ERROR: rpcx: client protocol error: read tcp 127.0.0.1:36160->127.0.0.1:6914: read: connection reset by peer

这就非常让人疑惑了。。首先,为什么call logic的PushRoom会出错,传入的两个参数应该都没问题才对,其次既然在这里panic了的话为什么logic层又会生成消息推进redis里。。看了很久看不出个所以然,还望解答

@LockGit
Copy link
Owner

LockGit commented Feb 28, 2023

在对照文档看看哪里有遗漏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants