PubNub - 推动HTML更新

时间:2012-03-31 15:31:27

标签: python html push-notification pubnub

我目前正在尝试使用PubNub将html更新推送到用户的页面。我想将html代码推送给用户(这包括链接,引号,需要使用html),并将其添加到用户表的末尾。

我目前正在尝试使用api发送如下消息:

info = pubnub.publish({
        'channel' : 'myChannel',
        'message' : {
        'some_text' : message
        }
    })

消息是:

<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>

我的问题是,当我尝试发送页面更新时,我收到以下消息:

</div> is not JSON serializable

我假设这是因为我试图发送HTML代码?

有关如何解决此问题/更好方法的任何建议吗?这是我第一次尝试将消息“推送”到网页上,所以我可能实现了这一切。

2 个答案:

答案 0 :(得分:2)

您正尝试通过PubNub发送原始HTML并运行到“JSON not Serializable”问题。首先,假设你可以推送HTML 代码,你是正确的!欢呼。只需确保您放在"message"内的数据实际上是 STRING 。以下类型是JSON Serializable:

  1. 物件
  2. 阵列
  3. 字符串
  4. 数字
  5. 确保不发送特殊的python类或函数。这些不会序列化。字符串内容可以包含任何 UTF-8 字符单字节多字节

    将此Python用于"message"

    message = '''<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>'''
    

答案 1 :(得分:0)

我不是网络专家,但对我来说听起来你应该定义一个模型并发送它。然后,您将反序列化模型并更新客户端。这样你可以使用JSon,你不会遇到任何问题。

如果您必须发送HTML,则传输HTML时的另一个选项是将其编码为基本64字符串。使用这种方法,您可以在发送字符串之前对其进行编码,并在接收客户端上对其进行解码。关于在谷歌上编码base64字符串的信息很多。这使得字符串不会绊倒HTML标签等。

以下是与base64进行编码的示例:http://ostermiller.org/calc/encode.html 例如,以下代码:

<img src="images/mypicture.jpg"></img>
<div id="chat-box"/>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
</ul>

看起来像base64字符串

PGltZyBzcmM9ImltYWdlcy9teXBpY3R1cmUuanBnIj48L2ltZz4KPGRpdiBpZD0iY2hhdC1ib3gi

Lz4KPHVsPgogIDxsaT5JdGVtIDE8L2xpPgogIDxsaT5JdGVtIDI8L2xpPgo8L3VsPg ==