在Laravel中实现一些实时消息

时间:2013-11-03 21:47:26

标签: laravel websocket real-time

我目前正在弄清楚如何以最简单的方式构建与Laravel链接的实时消息系统。

我要做的是:

想象一下2个用户,A&乙

  1. A向B发送消息,Laravel将其保存在数据库中,并通知实时服务器新消息可用。
  2. 实时服务器通知B。
  3. B进行ajax调用以获取消息。
  4. 所以我只想要一个比完全成熟的实时消息系统更简单的东西,而不是直接发送消息只是通知客户端有新消息。

    是否可以使用某些服务,node.js或其他东西来实现?

2 个答案:

答案 0 :(得分:3)

有一篇关于Medium的文章,其中介绍了使用Laravel和ReactPHP而不是node.js https://medium.com/on-coding/eaa550829538制作实时聊天应用程序的过程。 也许你可以找到对你有用的东西。

答案 1 :(得分:-2)

您可以使用Accord Cloud Service作为通知服务来实现目标。 Accord使用ActiveML,一种类似JSON的语言来创建实时应用程序。

以下Python代码示例在客户端定义的“有趣”事件发生时向客户端浏览器发送通知。

#!/usr/local/bin/python

import sys
import socket

if __name__ == '__main__':

    #
    # Connect with Accord Cloud Service using telnet port
    #

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("ac.accord.com", 23))
    data = s.recv(1024)

    #
    # Login with user and password
    #

    s.send("your-email-address-goes-here\n")
    data = s.recv(1024)
    s.send("your-password-goes-here\n")
    data = s.recv(1024)

    #
    # Ensure Msg variable exists.
    #

    s.send("what is type of element Msg;\n")
    data = s.recv(1024)
    if data.startswith('error'):
            s.send("create string Msg;\n")
            data = s.recv(1024)

    while (1):
            print "Enter message to send to a browser: "
            msg = sys.stdin.readline()
            msg = msg[:-1]
            print("set string Msg = \"%s\";\n" % msg) 
            s.send("set string Msg = \"%s\";\n" % (msg))
            data = s.recv(1024)

    s.close()

PHP,Perl,Java,C / C ++等代码与上面的代码非常相似。如果需要,您还可以使用浏览器中的JavaScript发送通知。您还可以使用ActiveML CLI远程登录云服务并完成相同的操作。

在上面的示例中,每次将“set string Msg”发送到云服务时,它会通知所有对该项感兴趣的客户端浏览器Msg的值已更改。然后每个浏览器继续更新页面。在下面的示例中,客户端浏览器接收从上面的Python程序启动的通知/更新,并显示输入文本的警报。

    http://ac.accord.com/demo/notify.html

要使用它,请点击“登录”按钮创建一个免费的临时帐户,然后按照说明进行操作。

您预计会有多少并发客户端,10,100,1000 +?披露:我为Accord Software,Inc。工作。