Socket.io私人消息通知

T. *_*maz 5 php mysql node.js socket.io laravel

嘿那里stackoverflow!我正在开发一个Laravel3社区,我正在努力实现一些Facebook风格的私人消息.

我做了编码部分,但我和我的朋友非常同意添加实时消息通知.我做了我的研究,我不能说我找到了一篇关于这个的好文章,其中一些开始oh you know everything about matrix so lets socketsocketsocketsocketsocket我很困惑如何开始,从哪里开始,反正这是什么,很多人说这是go with MongoDB never use MySQL again.什么哎?我正在使用MySQL我在Laravel中创建了一个不错的私人消息系统,我想添加实时通知!

我想做的就是

  1. UserA向UserB发送消息
  2. 消息插入privmsg表.
  3. 套接字或你建议的任何东西,告诉UserB的浏览器有来自UserA的+1新消息
  4. UserB看到有一条未读消息没有刷新他的页面并点击阅读它.

我怎样才能做到这一点?Socket.io最好的选择呢?如果是的话我该如何使用它?任何片段都会如此棒!或关于我的情况的教程:)

我真的很感激

Bra*_*rad 10

你有思考的问题"X永远比Y好,所以总是使用X".它可能有一个名字......甚至可能是一本书或两本书.谁知道.让我们从你的第一个问题开始:

什么是这个狗屎无论如何,许多人说"与MongoDB一起再也不用MySQL了." 老兄到底是什么?

你应该停止与任何人说过这段时间.MySQL和MongoDB是两种非常不同类型的数据库的数据库系统.它们通常被称为基于表格和基于文档的.使用MySQL(许多其他利用SQL的数据库......可能还有一些不使用SQL),您的数据存储在一组非常具体的模式概述的关系表中.此表中的每条记录都符合具有特定类型集的特定字段集.这种类型的数据库非常适合多种数据.

MongoDB是基于文档的各种数据库,通常称为"NoSQL"(意思是非SQL).每个"文档"可以具有整个结构,包括具有子项和子项的节点.每个文档都可以拥有自己独特的数据集.文档存储在"集合"中.这种类型的数据库有一些优点......对于某些类型的操作来说它可以非常快.这就是说,对于其他事情来说这很糟糕,例如当你有一堆数据完全相同时.像这样的数据库上的数据聚合非常慢(但它一直在变得越来越好!).

我想说的是MySQL和MongoDB只是不同的工具,专为不同的工作而设计.因为你的朋友告诉你螺丝比指甲更好,所以不要用螺丝刀敲打钉子.

我想做的就是:UserA向UserB发送消息; 消息已插入privmsg表.套接字或你建议的任何东西,告诉UserB的浏览器有来自UserA的+1新消息; UserB看到有一条未读消息没有刷新他的页面并点击阅读它.

再次,为工作选择工具.知道你的工具是一个好的开始.Socket.IO旨在建立服务器和客户端之间的通信通道.它提供类似Web套接字的功能,通常用于Node.js服务器和Web浏览器之间(但也可以在其他环境中使用!).它的两个主要特性是,当Web套接字不可用时(它与旧浏览器兼容)它提供后备传输,并且它在一些简单的调用中包装了一个事件消息系统.您不必担心底层沟通.只是emit和一端的事件,它被解雇了另一端.简单.

对于服务器和浏览器之间的实际通信,Socket.IO是一个很好的选择.它提供近实时通信.但是,Socket.IO不仅仅是一些可以解决你所有问题的魔法.如果是的话,几乎每个人都没用.

由于您的消息需要保留,因此将它们存储在数据库中是个好主意.我会怎么做:

  1. 在消息发送时,将副本插入数据库
  2. 在插入时,将pub/sub上的通知发送到群集中的其他服务器
  3. 与获取消息的用户建立连接的任何服务器都将从其他服务器看到此通知.
  4. 该服务器将从数据库中加载用户的消息数据,并通过Socket.IO发出

你想要一个教程吗?Socket.IO主页上的例子非常好:http://socket.io/