我正在努力在我的网站中添加好友功能。我的技术堆栈是reactjs,nodejs,socket.io和mongodb。我允许用户点击添加好友按钮,我将以下信息存储到DB。即,请求者,接收者和身份。
现在我想向收件人发送关于好友请求的通知,并且我在服务器端使用socket.io,在客户端使用socket.io-client。
要发送通知,我在添加好友请求动作调用后在我的组件中发出套接字
let data = {}
data.loginId = loginId;
data.friendId = friendId;
this.props.submitFriendRequest(data)
socketClient.emit('new friend request', data);
现在,在服务器端,我正在收听该事件并发送带有信息的新事件
socket.on('new friend request', (friend) => {
io.sockets.emit('new friend', friend);
});
在客户端,我正在收听新朋友事件和呈现通知
socketClient.on('new friend', (data) => {
//below I am checking current loginId and the recipient id are some and if so I am showing the notification
if(this.props.loginId==data.friendId){
this.setState({
notifications: data
})
}
});
但是我可以在用户当前登录时向收件人显示通知,但问题是它只显示一次,如果收件人刷新页面,则通知正在消失。此外,如果收件人退出并重新登录,则不会显示通知。
我不知道如何收听该事件并显示通知,直到收件人接受或拒绝该朋友请求为止。如果收件人没有看到该通知,那么每当他/她登录或刷新页面时,通知都必须在那里。
我是socket.io的新手。