【问题标题】:Would like to use PubNub to send real-time updates to the user's web browser想使用 PubNub 向用户的网络浏览器发送实时更新
【发布时间】:2012-07-24 06:16:45
【问题描述】:

考虑使用 PubNub 向用户的网络浏览器发送实时更新。

我查看了他们的网站和资料。看起来他们有几个不同的选择。

我们希望使用它向用户正在查看的网页发送实时更新。这些信息很简单,例如“您刚刚收到一条消息”。我们不会尝试实现聊天程序或类似的东西。

PubNub 是一个很好的解决方案吗?如果是,应该使用哪个版本的服务?

我们在 Heroku 服务器上运行 Django。

非常感谢!

【问题讨论】:

  • 嗨,克里斯,我现在正在为您创建一个简单的入门示例,并将准备好供您使用。我有一个简单的问题:您是否正在寻找这样的通知:blog.pubnub.com/html5-mass-broadcasting-desktop-notifications
  • @PubNub - 看起来很相似。不过,它不需要是桌面通知。它只需要在浏览器内部工作。就像您在 facebook 上,并且页面上亮起一条通知,让您知道您有一条消息。没有任何东西需要额外的权限。非常感谢您的帮助!
  • 克里斯,太好了。我们今天正在研究一个示例,并将提供一些代码和文档来说明如何实现。
  • 嗨,克里斯,我们仍在积极为您准备一个简单的起点。我们今天将提供一个链接和文档以及示例代码和一个工作示例。
  • github.com/pubnub/pubnub-api/tree/master/app-showcase/… - PubNub Facebook 通知窗口示例 - 接下来将添加 Python 推送支持。

标签: python django heroku real-time-updates pubnub


【解决方案1】:

PubNub Facebook 通知

这是一个类似 Facebook 的例子 通过 PubNub 向您的用户通知自定义消息的窗口框。 您可以在他们的手机或浏览器上向您的用户发送更新。 这将向您的用户显示通知;任何通知你。

使用 PubNub 允许通过 WebSockets、BOSH、Comet 和其他机制进行数据推送 在您的应用程序中使用,为您提供发送数据的能力 随时通过MASS BROADCAST直接向您的用户发送或 个人通知

从这里开始:现场演示

立即尝试: http://pubnub-demo.s3.amazonaws.com/facebook-notification/index.html

下载源代码: https://github.com/pubnub/javascript/tree/master/examples/facebook-notification

从这里开始可以轻松复制/粘贴代码。 这很容易上手,我们建议您开始 在开始之前使用上面的示例链接。

设置您的页面

首先包含 FBootstrap 资源,以便提供 通知窗口的外观。 将这些样式添加到您的 HTML 文件中。

<link href=bootstrap.css rel=stylesheet>
<style type=text/css> body { padding-top: 60px; } </style>

数据连接代码

接下来您需要设置 PubNub 数据连接,然后 添加收到数据后如何处理数据的规则。

   <script src="https://pubnub.s3.amazonaws.com/pubnub-3.1.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-modal/2.2.6/js/bootstrap-modal.js"></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script>(function(){

    // PubNub (For Data Push to User)
    var pubnub = PUBNUB.init({
        subscribe_key : 'demo',
        ssl           : false
    });

    // Setup New Data Push Connectoin via PubNub
    pubnub.subscribe({
        restore  : true,
        channel  : 'example-user-id-1234',
        callback : show_notification
    });

    // Setup Alert Window
    $('#new-alert').modal({ keyboard : true });

    // Show the Notification Window
    function show_notification(message) {
        $('#new-alert').modal('show');
    }

    // Simulate Notification
    $('#simulate-notification').bind( 'mousedown', function() {
        pubnub.publish({
            channel : 'example-user-id-1234',
            message : 'alert'
        });
        return false;
    } );

    })();</script>

Python 推送示例

接下来您将要添加此python 代码 到您的 Django 或任何其他框架。 您可以将此添加到应用程序中的message post 代码中。 这将向您的用户发布通知。 此特定示例将导致出现通知 在 Facebook 通知页面内。

pip install pubnub

Python 源码

## PubNub Setup
import pubnub from Pubnub
pubnub = Pubnub( 'demo', 'demo', None, False )

## Push Notice to 'example-user-id-1234'
info = pubnub.publish({
    'channel' : 'example-user-id-1234',
    'message' : { 'your-data' : 'any-data-here' }
})
print(info)

【讨论】:

  • 请看下面的答案。并给我们一些解决方案。谢谢。
  • 我可以将它用于 django 吗?有什么例子吗?我可以使用它制作类似于 Instagram 的服务吗? @PubNub
  • Django:是的。 示例:遵循上面的基本 Python 源代码。构建 Instagram:是的。
【解决方案2】:

对于一些不太通用的东西,使用由 Django 提供的 API 触发的信号和非常强大的通道安全性,请查看https://github.com/sivang/django-pubnub(直接来自烤箱;))。

【讨论】:

  • Sivan,我刚刚在你的博客上添加了一条关于新 import 声明的评论。 import pubnub from Pubnub(注意小写)。感谢您整理该教程。
【解决方案3】:

我用 pubnub 和 socket.io 来做这种事情......客户端很容易管理,这要归功于多路复用。我的代码如下所示:

var pubnub_setup = {
    channel       : 'xxx',
    publish_key   : 'xxx',
    subscribe_key : 'xxx'
};

var price_update = io.connect( 'http://pubsub.pubnub.com/price_update', pubnub_setup );
var table_update = io.connect( 'http://pubsub.pubnub.com/table_update', pubnub_setup );    

price_update.on( 'connect', function() {
          // do stuff here
} );
table_update.on( 'connect', function() {
          // do stuff here
} );
table_update.on( 'message', function(message) {
          // do stuff here
} );

带有 socket.io 的 PN https://github.com/pubnub/pubnub-api/tree/master/socket.io

与 socket.io 多路复用 http://vimeo.com/34496366

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多