【问题标题】:React,socket.io posts with comment system [closed]带有评论系统的 React,socket.io 帖子 [关闭]
【发布时间】:2021-02-13 09:36:36
【问题描述】:

我想提出一个关于如何构建“带有实时 cmets 的帖子”的问题。 我是网络开发的新手,实际上 5 个月,我已经在我的社交应用程序中达到了一个点,我希望用户能够发布和评论帖子。经过一些研究,我发现 socket.io 可以帮助你,但我不知道如何实现它。用户应该为其帖子建立一个套接字连接吗? 关于我使用的一些信息: 后端:Node、Express 前端:反应 提前致谢 !!!!!! ~失眠

【问题讨论】:

    标签: javascript reactjs socket.io comments posts


    【解决方案1】:

    谁可以看到这些帖子?每个人?只有连接?

    我会告诉你,如果每个人都可以看到帖子,我会做什么,你可以在应用加载时创建一个事件侦听器,或者在你加载接收帖子 ID 和消息对象的帖子的位置创建一个事件侦听器,如果你使用状态管理库,如 Redux/MobX 或任何存储数据的地方,将消息对象推送到该 post.cmets(?)

    socket.on('addComment', ({ postId, msg }) => // a dispatch call to add the comment)
    
    • 不要忘记在卸载时取消订阅该事件

    在有人添加评论后,类似的东西(后端)

    socket.emit('addComment', { postId, msg});
    

    真的很难告诉你该做什么,因为只有你知道你的应用程序和它的逻辑。

    我建议您先尝试 Socket.IO,了解其工作原理,然后再将其添加到您的项目 https://socket.io/get-started/chat/https://socket.io/docs/

    一般来说,社交应用与 Firebase 配套使用,因为您是新开发人员,我建议您根据需要选择合适的技术 :)

    【讨论】:

    • 感谢您的回复先生,是的,任何人都可以看到 cmets,我想要构建的内容类似于 facebook、instagram 或 twitter 帖子。 Soo 我的想法是,例如,当我点击社交按钮时,只有帖子会被渲染,然后当用户点击 cmets 时,cmets 将被渲染。直到这一点很容易,我的问题从另一个人的评论开始userA 应该实时显示在 userB 上,因为 userB 已单击同一帖子的 cmets 按钮。 (post 和 cmets 最初是从 mysql db 加载的)在此先感谢!!!!
    • 当有人添加评论时,只需调用 io.sockets.emit('addComment', { your_data })。 io.sockets 将发射到所有套接字。所以你所有的登录用户都会捕捉到它并更新你的 cmets。您将帖子存储在哪里?
    • 另外,当有人创建新帖子时,您可以为 'newPost' socket.on('newPost, post => add_post_to_posts_array) 添加一个侦听器,同样,在将帖子添加到数据库后,向所有人发出“newPost”。
    • 我明白这一点,但我必须创建房间以便用户连接到带有帖子 ID 的房间,还是我必须创建命名空间?每个帖子?还是所有帖子一个? :/。我将我的帖子和评论存储在 aws db (mysql) 中
    • 房间适合在特定人之间使用套接字,例如通过房间 ID 进行私人/群组对话。您想发送给正确的用户,但在您的情况下,帖子正在为登录的任何人加载,不需要房间(想象 1k/10k+ 帖子)。您所要做的就是添加一个接收 postId 和 msg 并发送给每个人的侦听器“addComment”,然后前端应该使用新的 msg 更新 posts[postId].cmets。我更喜欢使用的是帖子的散列对象,因此您可以使用 posts[postId] o(1) 而不是循环遍历整个数组 o(n)。
    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2020-12-27
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多