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

你是怎么处理用户不在线,将用户的未读信息条数加1的呢 #1

Open
luanjinlong opened this issue Feb 8, 2019 · 1 comment

Comments

@luanjinlong
Copy link

你好,我是做后端PHP的,对于nodejs不是很溜,最近在和公司前端做聊天功能,也是vue加nodejs。聊天的实现我知道很简单,在前端向一个聊天通道A发送信息就好了,后端监听这个A通道,然后在发送给某个通道(比如B),前端再监听这个B通道。不过,我不是很清楚未读信息条数的记录那块是怎么处理的。我看你的 chat.vue 文件中,sendMessage() 发送信息的处理,1.首先给后端 chat/chatwith 路由发送请求,在后端保存聊天记录,2.然后将聊天赋值给聊天字段,3.将消息发送给聊天字段你收到聊天信息后,将消息推送到了 receiveMsg 通道。但是这时候你是怎么处理如果聊天对象在聊天页面就直接推送消息,如果不在,就将对方的未读消息加1呢?我没有看出你是则哎哪里处理的

另外,我觉得你做的有些方面可以改进,不知道我说的对不对:
你在后端接收到聊天之后,使用 receiveMsg 通道发送信息。但是你前端应该是每个在线用户都有监听这个通道,这样不会造成通道的压力吗?另外,前端也得判断数据是不是自己的。是不是可以改成在前端监听 receiveMsg+'A-B'(AB是发送消息与接受消息的人) 通道,后端根据传递的发送人和接收人,就可以固定了这个通道
在 js 中,字符串应该也是可以直接做比较的吧。双方聊天时,通道名字可以根据 A>B ?'A-B':'B-A' 这种规则,这样就固定了两个人的唯一聊天通道。另外,你从后端获取 mongodb 数据的时候,也不用再使用 or 来获取两人的聊天记录了,因为两人已经有了唯一通道 receiveMsg+'A-B' 可以加你微信(jndx00789)聊一聊这个聊天功能吗?我主要不知道设计思路,也是边做边想。但感觉现在的想法还是不对

@CBDxin
Copy link
Owner

CBDxin commented Feb 21, 2019

你好,我是做后端PHP的,对于nodejs不是很溜,最近在和公司前端做聊天功能,也是vue加nodejs。聊天的实现我知道很简单,在前端向一个聊天通道A发送信息就好了,后端监听这个A通道,然后在发送给某个通道(比如B),前端再监听这个B通道。不过,我不是很清楚未读信息条数的记录那块是怎么处理的。我看你的 chat.vue 文件中,sendMessage() 发送信息的处理,1.首先给后端 chat/chatwith 路由发送请求,在后端保存聊天记录,2.然后将聊天赋值给聊天字段,3.将消息发送给聊天字段你收到聊天信息后,将消息推送到了 receiveMsg 通道。但是这时候你是怎么处理如果聊天对象在聊天页面就直接推送消息,如果不在,就将对方的未读消息加1呢?我没有看出你是则哎哪里处理的

另外,我觉得你做的有些方面可以改进,不知道我说的对不对:
你在后端接收到聊天之后,使用 receiveMsg 通道发送信息。但是你前端应该是每个在线用户都有监听这个通道,这样不会造成通道的压力吗?另外,前端也得判断数据是不是自己的。是不是可以改成在前端监听 receiveMsg+'A-B'(AB是发送消息与接受消息的人) 通道,后端根据传递的发送人和接收人,就可以固定了这个通道
在 js 中,字符串应该也是可以直接做比较的吧。双方聊天时,通道名字可以根据 A>B ?'A-B':'B-A' 这种规则,这样就固定了两个人的唯一聊天通道。另外,你从后端获取 mongodb 数据的时候,也不用再使用 or 来获取两人的聊天记录了,因为两人已经有了唯一通道 receiveMsg+'A-B' 可以加你微信(jndx00789)聊一聊这个聊天功能吗?我主要不知道设计思路,也是边做边想。但感觉现在的想法还是不对

当聊天对象在聊天页面时,在退出聊天页面时清除当前的未读消息
感谢你的建议 因为最近比较忙 所以没怎么维护这个项目

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