嘿那里stackoverflow!
我正在开发一个Laravel3社区,我正在努力实现一些Facebook风格的私人消息.
我做了编码部分,但我和我的朋友非常同意添加实时消息通知.我做了我的研究,我不能说我找到一篇关于这个的好文章,其中一些开始哦,你知道关于矩阵的一切所以让我很困惑如何开始,从哪里开始,无论如何这是什么,很多这个说与MongoDB一起再也不用MySQL了.老兄到底是什么?我正在使用MysqL我在Laravel中创建了一个不错的私人消息系统,我想添加实时通知!
我想做的就是
> UserA向UserB发送消息
>消息插入privmsg表.
>套接字或您建议的任何内容,告诉UserB的浏览器,UserA有1条新消息
> UserB看到有一条未读消息而没有刷新他的页面并单击以阅读它.
我怎样才能做到这一点? Socket.io最好的选择呢?如果是的话我该如何使用它?任何片段都会如此棒!或关于我的情况的教程:)
我真的很感激
what is this shit anyway,many of this say “go with MongoDB never use MysqL again.” Dude what the heck?
你应该停止与任何人说过这段时间. MysqL和MongoDB是两种非常不同类型的数据库的数据库系统.它们通常被称为基于表格和基于文档的.使用MysqL(许多其他利用sql的数据库……可能还有一些不使用sql),您的数据存储在一组非常具体的模式概述的关系表中.此表中的每条记录都符合具有特定类型集的特定字段集.这种类型的数据库非常适合多种数据.
MongoDB是基于文档的各种数据库,通常称为“Nosql”(意思是非sql).每个“文档”可以具有整个结构,包括具有子项和子项的节点.每个文档都可以拥有自己独特的数据集.文档存储在“集合”中.这种类型的数据库有一些优点……对于某些类型的操作来说它可以非常快.这就是说,对于其他事情来说这很糟糕,例如当你有一堆数据完全相同时.像这样的数据库上的数据聚合非常慢(但它一直在变得越来越好!).
我想说的是MysqL和MongoDB只是不同的工具,专为不同的工作而设计.因为你的朋友告诉你螺丝比指甲更好,所以不要用螺丝刀敲打钉子.
All I want to do is: UserA sends a message to UserB; Message inserted into privmsg table.; Sockets or whatever you suggest,tells UserB’s browser there is +1 new message from UserA; UserB sees there is one unread message without refresh his page and click to read it .
再次,为工作选择工具.知道你的工具是一个好的开始. Socket.IO旨在建立服务器和客户端之间的通信通道.它提供类似Web套接字的功能,通常用于Node.js服务器和Web浏览器之间(但也可以在其他环境中使用!).它的两个主要特性是,当Web套接字不可用时(它与旧浏览器兼容)它提供后备传输,并且它在一些简单的调用中包装了一个事件消息系统.您不必担心底层沟通.只在一端发射和事件,然后在另一端触发.简单.
对于服务器和浏览器之间的实际通信,Socket.IO是一个很好的选择.它提供近实时通信.但是,Socket.IO不仅仅是一些可以解决你所有问题的魔法.如果是的话,几乎每个人都没用.
由于您的消息需要保留,因此将它们存储在数据库中是个好主意.我会怎么做:
>在消息发送时,将副本插入数据库
>在插入时,fire a notice over your pub/sub到群集中的其他服务器
>与获取消息的用户建立连接的任何服务器都将从其他服务器看到此通知.
>该服务器将从数据库中加载用户的消息数据,并通过Socket.IO发出
你想要一个教程吗? Socket.IO主页上的例子非常好:http://socket.io/