套接字-Io隔离到特定用户的多个通知

时间:2018-10-21 17:08:00

标签: node.js redis socket.io

我正在为博客作者创建一个通知系统,当他的博客文章收到应用程序中特定用户的评论时,将通知他。为了创建此系统,我使用了Node.js(应用程序语言),Socket.io(消息系统)和Redis(存储系统)。在我当前的设置中,我能够创建一个通知并将其传递给客户端进行显示,但是我不确定最好的方法是使用两个通知功能。

  1. 将通知隔离给撰写博客文章的用户。
  2. 显示多个评论通知,可以通过用户单击“ x”将其删除

这是我的客户端代码:

在提交评论表单时,我会将评论,博客ID和评论者用户ID存储到package.json

然后,客户端从服务器接收评论者的全名,博客的URL和博客的标题

notifications.js(从服务器socket-io接收数据):

client-notification

blog-comment.js(将注释正文从客户端发送到服务器socket-io):

$(document).ready(function() {
    console.log("notifications.js working");
    var socket = io.connect('http://localhost:3000');

    socket.on('notification', function (data) {
        console.log(data);
        var notification = data.commentor + " left you a comment on <a href='" + data.url + "'>" + data.title + "</a>";
    });
});

这是我的服务器端代码:

服务器端通知处理(请注意,用户会话cookie包含的用户ID将与设置为//Blog Comment - Comment Form class CommentForm extends React.Component { constructor(props){ super(props); this.state = { value: '', flash: '', socket: `${API_ROOT}` }; console.log(this.state.socket); this.postComment = this.postComment.bind(this); this.onChange = this.onChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); } //POST /app/blog/:blogId/comment postComment(comment, blogId, csrfToken, userId) { var body = { comment: comment, userId: userId }; //Sent to socket-io with body.blogId coming after POST response var route = `${API_ROOT}` + '/api/blog/' + blogId + '/comment'; fetch(route, { method: 'POST', body: JSON.stringify(body), headers: { 'X-CSRF-Token': csrfToken, 'Accept': 'application/json', 'Content-Type': 'application/json' } }) .then(res => { const socket = socketIOClient(this.state.endpoint); body.blogId = blogId; //Set blog Id to body variable socket.emit('client-notification', { body }); //Socket-io 'client-notification' body store return res.json(); }) .catch(err => { console.log(err); this.setState({'flash': 'error'}); }); } 对象的用户ID相匹配,因此这可能是一种过滤针对特定用户的通知的方法):

userNotification

0 个答案:

没有答案