在 muc 房间中使用 Strophe 发送 XHTML 消息
Sending XHTML messages with Strophe in a muc room
我正在尝试使用 Strophe 将 html 消息发送到 muc 房间。我还尝试通过 Psi 中的 XML 控制台发送以下 xml,但它不起作用,仅显示 Hello World。消息节有问题吗?
<message to="room@conference.server" type="groupchat"><body>Hello World </body><html xmlns="http://jabber.org/protocols/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml"><p style="color : red">Hello HTML World</p></body></html></message>
谢谢!
编辑1:迪斯科#信息室查询。我现在正在使用 Vacuum-IM 和 Psi 客户端,但 Psi 应该支持 xhtml-im ( http://psi-im.org/wiki/Supported_Protocols )
<iq xmlns="jabber:client" from="room@conference.server" type="result" id="foo" to="admin@server/Vacuum-IM">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity xmlns="http://jabber.org/protocol/disco#info" category="conference" type="text" name="room"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/muc"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_public"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_open"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_moderated"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_semianonymous"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_unsecured"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="muc_persistent"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/disco#info"/>
<x xmlns="jabber:x:data" type="result">
<field xmlns="jabber:x:data" type="hidden" var="FORM_TYPE">
<value xmlns="jabber:x:data">http://jabber.org/protocol/muc#roominfo</value>
</field>
<field xmlns="jabber:x:data" label="Description" var="muc#roominfo_description">
<value xmlns="jabber:x:data">asdf</value>
</field>
<field xmlns="jabber:x:data" label="Subject" var="muc#roominfo_subject">
<value xmlns="jabber:x:data"/>
</field>
<field xmlns="jabber:x:data" label="Number of occupants" var="muc#roominfo_occupants">
<value xmlns="jabber:x:data">1</value>
</field>
<field xmlns="jabber:x:data" label="Creation date" var="x-muc#roominfo_creationdate">
<value xmlns="jabber:x:data">20120423T17:31:49</value>
</field>
</x>
</query>
编辑 2:对消息节的响应
<message xmlns="jabber:client" from="room@conference.server/ad" type="groupchat" to="admin@server/Vacuum-IM">
<body xmlns="jabber:client">Hello World </body>
<html xmlns="http://jabber.org/protocols/xhtml-im">
<body xmlns="http://www.w3.org/1999/xhtml">
<p xmlns="http://www.w3.org/1999/xhtml" style="color : red">Hello HTML World</p>
</body>
</html>
Edit3:对 muc#traffic 查询的响应
<iq xmlns="jabber:client" from="room@conference.server" type="error" id="foo" to="admin@server/Vacuum-IM">
<query xmlns="http://jabber.org/protocol/disco#info" node="http://jabber.org/protocol/muc#traffic"/>
<error xmlns="jabber:client" type="cancel" code="404">
<item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
Edit4:Psi对客户端(功能)disco#info的响应(xhtml-im是最后一个)
<iq xmlns="jabber:client" from="admin@kossy.local/Kostyas-MacBook-Pro" type="result" to="admin@kossy.local/Vacuum-IM" id="foo">
<query xmlns="http://jabber.org/protocol/disco#info">
<identity xmlns="http://jabber.org/protocol/disco#info" category="client" type="pc" name="Psi"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/bytestreams"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/si"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/si/profile/file-transfer"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/disco#info"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/commands"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/rosterx"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/muc"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="jabber:x:data"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:1"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:transports:ice-udp:1"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:apps:rtp:1"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="urn:xmpp:jingle:apps:rtp:audio"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/chatstates"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/mood+notify"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/tune+notify"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/physloc+notify"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/geoloc+notify"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"/>
<feature xmlns="http://jabber.org/protocol/disco#info" var="http://jabber.org/protocol/xhtml-im"/>
</query>
编辑5:解决方案:获取iChat和Adium:-)Adium以不同的颜色和字体发送xhtml消息,但它并没有显示它自己做了什么。只有 iChat 可以正确呈现 xhtml。所以组合有效。也不要使用p标签,颜色应该是十六进制形式。例:
<message xmlns="jabber:client" type="groupchat" to="room@conference.server">
<body xmlns="jabber:client">Hello World</body>
<html xmlns="http://jabber.org/protocol/xhtml-im">
<body xmlns="http://www.w3.org/1999/xhtml">
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: Times New Roman; font-size: large; color: #FF0000;">Red text</span>
</body>
</html>
据
我所知,Psi不支持XHTML-IM。此类客户端将仅显示正常的<body>
内容。
不过,您的示例节是正确的,因此它要么像 ggozad 建议的那样,服务器删除它(某些服务器可以配置为执行此操作),要么只是客户端不渲染它。
尝试在接收客户端的 XML 控制台中检查 MUC 广播消息后<html>
子元素是否仍然存在。
房间可能不允许xhtml-im
。您可以通过查询房间来找到:
<iq to='room@conference.server'
id='foo'
type='get'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='http://jabber.org/protocol/muc#traffic'/>
</iq>
并检查http://jabber.org/protocol/xhtml-im
是否属于支持的功能。
相关文章:
- 如何为json对象中的段发送array[]
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 在验证和发送邮件后更改联系人表单的 html
- 将Javascript数组发送到控制器ASP.NET MVC
- 如何将字符串值从php页面发送到java脚本页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 如何使用Socket.io将命令从客户端发送到服务器
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 如何在react js中将值从一个组件发送到另一个组件
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何使用Javascript将空数组发送到PHP服务器
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- 如何配置分析以将数据发送到我自己的服务器
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- Strophe.js服务器发送不可用状态,即使对于当前正在主动聊天的用户也是如此
- 在 muc 房间中使用 Strophe 发送 XHTML 消息
- 如何使用strophe在CDATA中发送邮件正文