【问题标题】:Using node.js to show realtime notification of messages in a PHP application [closed]使用 node.js 在 PHP 应用程序中显示消息的实时通知 [关闭]
【发布时间】:2013-07-26 23:18:07
【问题描述】:

我有一个 PHP 应用程序,人们可以在其中发布不同的状态消息。我想在其中实现实时通知。

也就是说,如果用户发布内容,其他访问该网站的用户会立即在他们的屏幕上收到有关新帖子的提示。我听说你可以使用 node.js 来实现它。但我不知道它究竟是如何做到的。任何帮助将不胜感激。

【问题讨论】:

  • 问题应该显示一些代码示例和对问题的最小理解。话虽如此,当您不知道从哪里开始时,这可能会很困难,但是这个问题可能会被关闭,因为该样式不适合该站点。祝你在求知路上好运。

标签: php node.js real-time


【解决方案1】:

我建议你看看 socket.io。客户端向节点发送消息,节点可以保存到数据库(或通过 RESTful 调用转发到您的 php 应用程序)并通知所有客户端。

不是php,只有nodejs和js。享受;)

例子

服务器:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

客户

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

你必须在on("yourEvent", function() { ...on("yourEvent", function() { ...写下你想在客户端完成的事情

【讨论】:

  • 我在我的应用程序中使用了相同的技术,但现在想知道如何获取客户端的会话 ID?
  • @AbdulJabbarWebBestow:您在寻找 PHP-SESSIONID 吗?如果是的话,我不知道如何获得。 Socket.io 有自己的 sessionId,参考这个 SO 答案:stackoverflow.com/questions/6979992/…
  • 经过数小时的砸头后,我用这个技巧成功了 var sesid = client.handshake.headers.cookie.replace('PHPSESSID=',''); .由于页面是用 PHP 渲染的,所以获取 PHP 的 sessionID。
  • 每次调用页面时 Socket.io 都会创建一个新 ID,因为我们向节点发出另一个全新的请求。所以,在我们的例子中,使用 Node 的 SessionID 对我来说几乎是没有用的。而 PHP 的 Session ID 在浏览器中是相同的。
【解决方案2】:

您可以使用长轮询技术。 Long polling 是用于描述一种技术的名称:

  1. 发出 AJAX 请求(使用 jQuery 等 javascript 框架)
  2. 服务器等待请求的数据可用、循环和休眠(您的服务器端 PHP 脚本)
  3. 数据返回客户端并处理后(通常在您的 AJAX 请求的 onComplete 回调函数中)重复此循环

尝试像Commet 这样的服务器端推送技术。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多