2012-03-31 5 views
1

現在、PubNubを使用しているユーザーのページにhtmlアップデートをプッシュしようとしています。私はユーザーにHTMLコードを送りたい(リンク、引用、HTMLを必要とするものを含む)し、それをユーザーのためにテーブルの最後に追加したい。PubNub - 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コードを送信するpting?

これを修正する方法/これを改善する方法はありますか?これはウェブページにメッセージを「プッシュ」する私の最初の試みなので、私はこれをすべて間違って実装しているかもしれません。

答えて

2

PubNub経由で未処理のHTMLを送信し、「JSON not Serializable」問題を実行しようとしています。まず、あなたは正しいと仮定して正しいですHTMLコードをプッシュできます!ハレイ。 "message"の中のデータが実際にSTRINGであることを確認してください。以下のタイプがJSONシリアライズされている:

  1. オブジェクト
  2. 配列
  3. ストリングス
  4. 番号

特別なPythonのクラスや関数を送信しないようにしてください。これらはシリアル化されません。文字列の内容には、UTF-8文字のいずれか1バイトのマルチバイトのを含めることができます。 "message"ため

使用このパイソン:

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

HTMLコードを送信する最も良い方法は、リンク、画像(imaへのリンク他の場所でホストされていますか?) – xur17

+0

助けてくれてありがとう!私はBeautifulSoupを使ってHTMLコンテンツを抽出し、それをpubnub.publishコマンドに渡してWebページを解析しています。 pubnub.publishに渡そうとしていたコンテンツがまだBeautifulSoupオブジェクトだったようです。 これを文字列に変換しましたが、実際の文字列を送信できません。メッセージのサイズ制限や、これが黙って失敗する原因になっていますか? – xur17

+0

1.8KBが限界です。最大メッセージサイズは1.8KBで、これを回避するにはいくつかの方法があります:1.)ペイロード全体ではなくメタデータを送信する。 2.)ペイロードをS3にアップロードし、PubNub.Publish()メソッド経由でリンクを送信します。 3.)メッセージを1Kチャンクに分割し、クライアントで再構成します。 – PubNub

0

私はウェブ専門家でありませんが、あなたはモデルを定義し、代わりにそれを送信する必要がありますように私に聞こえます。その後、モデルを逆シリアル化してクライアントを更新します。そうすれば、JSonを使用することができ、問題は発生しません。

絶対にHTMLを送信する必要がある場合は、HTMLを転送する際のもう1つのオプションは、ベース64文字列でエンコードすることです。この方法では、送信する前に文字列をエンコードし、受信側のクライアントでデコードします。 googleにbase64文字列をエンコードする方法はたくさんあります。これにより、文字列はHTMLタグなどにトリプルアップされません。たとえば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 =をここで

は次のようになりますBASE64へとからど​​のようなエンコーディングの一例です=

関連する問題