1

我目前正在研究如何以最简单的方式构建与 Laravel 链接的实时消息传递系统。

我要做的是:

想象一下 2 个用户,A 和 B。

  1. A 向 B 发送消息,Laravel 将其保存在数据库中,并通知实时服务器有新消息可用。
  2. 实时服务器将此通知 B。
  3. B 执行 ajax 调用来获取消息。

所以我只想要一个比完全成熟的实时消息传递系统更简单的东西,而不是直接发送消息只是通知客户端有新消息。

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

4

2 回答 2

3

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

于 2013-11-03T21:53:32.407 回答
-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. 工作。

于 2013-11-12T00:30:20.773 回答