PubNub - продвижение обновлений HTML - PullRequest
1 голос
/ 31 марта 2012

В настоящее время я пытаюсь отправить html-обновления на страницу для пользователя, используя PubNub .Я хочу передать 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 ]

2 голосов
/ 31 марта 2012

Вы пытаетесь отправить необработанный HTML-код через PubNub и сталкиваетесь с проблемой «JSON not Serializable» .Во-первых, вы правы, предполагая, что вы можете нажать HTML код!Ура.Просто убедитесь, что данные, которые вы помещаете в "message", на самом деле STRING .Следующие типы являются сериализуемыми в формате JSON:

  1. Объекты
  2. Массивы
  3. Строки
  4. Числа

Убедитесь, чтоне отправлять специальные классы или функции 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>'''
0 голосов
/ 04 мая 2012

Я не веб-эксперт, но мне кажется, что вы должны определить модель и отправить ее вместо этого. Затем вы должны десериализовать модель и обновить клиента. Таким образом, вы можете использовать JSon, и у вас не возникнет никаких проблем.

Если вам абсолютно необходимо отправить HTML, другой вариант при передаче HTML - это закодировать его в строку из 64 строк. При таком подходе вы бы закодировали строку перед отправкой и расшифровали ее на принимающем клиенте. В Google есть много информации о кодировании строк base64. Это предотвращает срабатывание строки в тегах HTML и т. Д.

Вот пример того, как выглядит кодирование в base64 и из 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 ==

...