【问题标题】:PubNub: Publish does not seem to be working for me on 3G networkPubNub:在 3G 网络上发布似乎对我不起作用
【发布时间】:2016-01-27 08:59:03
【问题描述】:

我正在使用 PubNub。发布和订阅基本上没有问题。但是,发布不适用于像 3G 网络这样的慢速连接。 Wifi 还可以,但有人说 4G 也有同样的问题。有人知道怎么解决吗?

下面是我想做的。

1. UserA opens a web page from PC and subscribe a channel.
2. UserA publishes data to the channel from mobile app.

【问题讨论】:

    标签: publish-subscribe pubnub


    【解决方案1】:

    3G/4G/LTE 移动网络上的 PubNub

    在调用pubnub.subscribe(...) 方法时使用backfill: true 选项。这允许您的设备在移动网络上接收消息。回填选项可防止移动网络延迟竞争条件。

    // Setup
    var channel = 'a'+Math.random();
    var pubnub  = PUBNUB({
        ssl             : true
    ,   "publish_key"   : "pub-c-aefb421c-b30a-4afc-bae4-b866c5ea3d69"
    ,   "subscribe_key" : "sub-c-76f89e66-c3a9-11e5-b5a8-0693d8625082"
    });
    
    // Receive Message
    pubnub.subscribe({
        backfill : true
    ,   channel  : channel
    ,   error    : out
    ,   connect  : publish
    ,   message  : out
    });
    
    // Send Message
    function publish() { 
        out("CONNECTED!");
        pubnub.publish({
            channel : channel
        ,   error   : out
        ,   message : "SUCCESS IT WORKS!"
        });
    }
    
    // Network Check
    pubnub.time(function(a){out(a ? "NETWORK CHECK" : "NETWORK BAD")});
    
    function out(m) {
        document.getElementById("result").innerHTML 
            += "<br>" + JSON.stringify(m); 
    }
    <script src="https://cdn.pubnub.com/pubnub-dev.js"></script>
    <h1>PubNub 3G/4G/LTE Network</h1>
    <div id="result">PROCESSING_CONNECTIVITY...</div>

    PubNub 移动网络 - 示例输出

    您也可以决定是否需要其他选项。您还可以在connect 回调中发出pubnub.publish() 方法调用。

    pubnub.subscribe({
        channel  : channel,
        message  : out,
        connect  : function() {
            pubnub.publish({
                channel : channel
            ,   message : "SUCCESS IT WORKS!"
            });
        }
    });
    

    【讨论】:

    • 非常感谢。有效!!但是有些人说它有效但不稳定(他说它每2次只有效一次)如果PubNub对此有任何解决方案。我想知道。
    • 我将添加显示用户网络连接是否中断的代码。
    • 我更新了代码以包含 log trail 并显示错误(如果有)。
    • 谢谢。我将在移动应用程序中实现它。看起来非常有用,因为我不知道如何获取发布错误日志。我会放上'error'选项,如果出现错误,我会执行重试发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多