7

私は XMPP クライアントで作業しており、Strophe (javascript バージョン) によって送受信されるメッセージに問題があります。

問題は、「特殊」文字を含むメッセージです。たとえば、私が送信した場合:

私はここにいます。

外部クライアント (つまり iChat) が表示されます

私はここにいます。

strophe クライアントは何も表示しません。

同じメッセージを iChat から strophe クライアントに送信すると、正しく表示されます。

これが私が思いつくことができる最も基本的なサンプルコードです:

<html>
<head>
  <script type='text/javascript' src='strophe.min.js'></script>
  <script type='text/javascript'>
    function onConnect(status) {
        if (status == Strophe.Status.CONNECTED) {
            var message = $msg({to: CONTACT_JID, from: JID, type: 'chat'}).c('body').t("I'm here."); ;
            connection.send(message.tree());
        }
    }
    var connection = new Strophe.Connection('http://bosh.metajack.im:5280/xmpp-httpbind');
    connection.connect(JID, PASS, onConnect);
  </script>
</head>
<body></body>
</html>

助けてくれてありがとう。

編集:

アウトバウンド、Strophe は二重エンコーディングのようです。入力すると

私は

送っている

<body>I&amp;apos;m</body>

インバウンドで、CDATA を適切に処理していないようです。ガイダンスやアイデアをいただければ幸いです。

4

1 に答える 1

7

わかりました、に基づいて

https://github.com/metajack/strophejs/issues/54

https://github.com/metajack/strophejs/pull/59

テキストノードのエスケープを削除する必要があります。最小化されていないバージョンのstrophe.jsファイルとコメント行#846を開きます

//text = Strophe.xmlescape(text);
于 2012-02-05T05:06:17.987 に答える