问题标签 [jsjac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JSJaC + Openfire:与某些用户没有联系
好吧,我终于无所适从了。我有一个 XMPP 服务器(Openfire)正在运行,并尝试使用 JSJaC 通过 JavaScript 连接。奇怪的是,我可以为某些用户建立连接,但不能为所有用户建立连接。我可以重现以下行为:创建两个帐户(用户名/密码),即 r/pwd 和 rr/pwd,结果如下:
r/pwd 工作
rr/pwd 不起作用。
到目前为止,每个用户名仅包含一个字符的帐户都可以使用。这已经够奇怪了。另一方面,旧帐户,例如 alice/a 作品。整个连接问题是相当新的,我无法追踪到我所做的任何更改。
并且为了让我对任何支持 XMPP 的即时通讯程序完全理解,所有帐户都可以工作,包括 rr/pwd。所以假设,错误一定在我的 JavaScript 代码中。这是他的相关片段:
上面的代码有效,但设置 oArgs.username = "rr",但它失败了。
我将不胜感激任何提示。我很确定这一定是我在这里想念的非常愚蠢的事情。
基督教
apache - JSJaC+Openfire 仅在本地工作
到目前为止,我完全在本地开发,在我的笔记本电脑上安装了所有东西(Apache、Openfire、JSJaC 应用程序),运行良好。现在我想为 Apache/Openfire 使用远程服务器。我做了基本相同的步骤,包括。整个 http-bind 的东西。我使用 JSJaC 提供的 simpleclient.html 测试设置。
现在这是交易,如果我直接在远程服务器上使用 simpleclient - 例如,http ://here.domain.org/simpleclient.html - 它可以工作。如果我在本地使用它——例如,http://[local_machine]/simpleclient.html——并且使用相同的设置,我会得到一个 503(服务不可用)。这似乎更像是网络/Apache 问题而不是 Openfire/JSJaC 问题,但我不是专家。
我的 simpleclient 参数:
- HTTP 基础: http ://here.domain.org/http-bind/
- JabberServer:here.domain.org
因此,在我的 apache 虚拟主机 conf 文件中,我有以下几行:
- AddDefaultCharset UTF-8
- 代理请求开启
- ProxyPass /http-bind/ http://127.0.0.1:7070/http-bind/
所以基本上http绑定是有效的,因为当simpleclient.html驻留在服务器上时我可以连接。到目前为止我尝试了什么:
- 检查 7070 是否从外部打开:是
- 检查 etc/hosts - 这里是相关行
- 127.0.0.1 本地主机
- 123.123.123.123 这里.domain.org 这里
- 检查 Apache conf 的限制:找不到任何限制,基本上我到处都有“允许所有人”(但我不完全确定在哪里看)
顺便说一句,使用 Pidgin,我可以从我的笔记本电脑连接到远程服务器。只是 JSJaC simpleclient 不行。所以我认为是 http-bind 造成了麻烦。如果端口 7070 未打开,我会理解,但确实如此。
非常感谢任何提示或帮助!
基督教
reverse-proxy - 无法将 jsjac 连接到 openfire
我正在尝试将 jsjac 连接到 openfire 服务器。当然很少成功。
我有一个 apache 服务器,它将请求重定向到托管在 eclipse 中的 tomcat 中的前端 jsps,并将请求绑定到 XMPP 服务器。
这是我在配置文件中的虚拟主机映射:
ServerName ualbanybook.com AddDefaultCharset UTF-8 ProxyRequests On ProxyPass /miniFaceBook http://localhost:8080/miniFaceBook ProxyPassReverse /miniFaceBook http://localhost:8080/miniFaceBook RewriteEngine on RewriteRule /http-bind/ http://localhost:8181/ http绑定/ [P]
下图显示了尝试注册时的请求 url 和错误代码。
下一个 chrome 开发工具快照显示注册请求确实已发送,并且浏览器收到了 200 OK 响应。
我已经为 openfire 中的 http-binding 配置了端口 8181。任何指针/帮助将不胜感激。谢谢。
javascript - 在 Windows Phone 7.1 中使用 phonegap 工具的 XMPP 聊天客户端
在我的 WindowsPhone7.1 项目中,有一个 XMPP 聊天模块。我完美地使用 HTML/CSS 设计了聊天窗口。
为了连接 Jabber 服务器(Openfire),我使用了 JsJaC library。
如何将其与 Windows Phone 7.1 项目集成?
WWW
我应该在文件夹中包含库脚本文件吗?
之后我可以简单地在 cordavo-1.5.0.js 中编写我的客户端脚本吗?
xmpp - Facebook 聊天平台是否支持 BOSH?
我读过一个相关的问题(Integrating Facebook Chat)的回答 whitch 说
Facebook 不进行 S2S 联合,只有 C2S,因此您必须将其用作您的 XMPP 服务器(或在您的服务器上实现类似 XEP-0100 的东西)。Facebook 目前不支持 BOSH、AFAIK。
我还需要将 Facebook Chat 集成到我的应用程序中,我想知道他们现在是否支持 XMPP over BOSH?developer.facebook.com 上只有一页关于 Chat API 的页面,我没有看到 BOSH 的东西。
如果他们不支持BOSH,我该怎么办?我需要一个带有 BOSH 的服务器作为代理吗?
谢谢。
xmpp - 即使与 XMPP 服务器断开连接,如何保持群聊室(MUC)一直存在?
我正在使用 XMPP (Jabber) 协议中的 openfire/jsjac 开发即时消息模块(J2EE Web 应用程序的一部分)。
openfire 用户/组管理/表已重定向到我们的业务数据库表,这意味着我不再需要在 openfire 中维护用户/组。所有用户/组关系已在业务数据库中设置。
下面是我根据要求绘制的关于主窗格的图像。由于我的声誉低下,我无法发布图片,因此我发布了即时消息主 UI 的图片的网址。很抱歉给您带来不便。 即时消息主 UI 图像
你们可以看到,在左侧窗格中,没有用户/组列表。有根据历史记录保存的会话,这让我很困惑,特别是关于组。我从 XMPP.org 阅读了“XEP-0045:多用户聊天”。我知道关于群聊的一般工作流程: XEP-0045:多用户聊天”
- 创建房间,制作房间Jid。
- 配置房间。(预留房间)
- 从业务数据库中获取 usersjid 并将用户绑定(添加)到新创建的房间。
- 向房间发送消息。
- 服务将向所有组成员发送消息。
并且知道有房间类型是持久房间被解释为“如果最后一个居住者退出,则不会被破坏的房间;反义词:临时房间。 ”由doc。在同一个文档中有一些句子说:
房间所有者必须能够销毁房间,特别是如果房间是持久的。工作流程如下:
- 房间所有者请求销毁房间,可选择指定原因和替代地点。
- 房间从房间中移除所有用户(包括有关备用位置和被移除原因的适当信息)并销毁房间,即使它被定义为持久性。
看了上面这句话,我更加疑惑了,还有几个问题我还是一头雾水。
- “乘员出口”是什么意思?如果住户从系统注销(离线),是否意味着“存在”。并且所有住户都处于离线状态,这是否意味着“持久类型”将使我们创建的房间保持存在?那么房间信息保存在哪里呢?在openfire或其他地方?
- 假设所有住户都存在(离线),虽然这个创建的房间没有被破坏,那么绑定信息呢?我的意思是假设一个用户被所有者(管理员)授予会员资格,如果这个用户存在或离线,持久房间将保留他的会员角色,对吗?也就是说,只要房间没有被破坏,所有的配置和绑定信息都不会丢失,对吧?
- openfire服务器遇到重启的情况,创建的房间及其信息是否还在?
- 如果所有者重新登录,如何重新找到创建的房间?通过保存房间ID?
除了上面的问题,我想到了实现具有持久房间的 MUC 的工作流程。请您检查一下,看看流程中存在什么问题?
我的具有持久空间的 MUC 工作流程
- 所有者向服务器发送出席对象以创建房间并给出房间JID,并设置房间ID。
- 业主向服务器发送 IQ 对象以配置创建的房间并将房间类型设置为“持久”。
- 所有者发送 IQ 对象授予其他用户成员角色。(绑定信息)
- 所有者向 ROOM jid 发送消息 Object,ROOM jid 将所有消息转发给其绑定的成员。
- 该房间的普通成员处理消息(接收)并获取房间jid和房间id (我希望包括所有者在内的所有用户在重新登录时都可以使用这个房间id重新找到房间..)
那么无论是什么角色,所有者还是普通成员,在房间类型为“持久”的前提下,如何根据房间jid或房间id重新找到并重新加入创建的房间?
javascript - 在 xmpp 多聊天中,管理员角色仅将在线用户成员资格授予创建的房间?
我阅读了 XMPP 文档:XEP-0045: Multi-User Chat
在文档中,有这样一段:
管理员可以向用户授予会员资格;这是通过将用户的裸 JID 的从属关系更改为“成员”来完成的(如果提供了昵称,如果实现支持该功能,该昵称将成为房间中用户的默认昵称):
那么管理员要授予会员资格的用户必须在线还是不在线?换句话说,无论新用户当前的登录状态(在线还是离线),管理员是否可以单方面决定授予新用户的角色(成员资格)?
unit-testing - unit testing xmpp client
What is the main points of testing xmpp client?
I'm writing a chat, sort of XMPP client using JsJac library. Now I need to test behavior of my client after different server signals. For instance - that when server send's some error to my client - it would trigger ondisconnect
callback. I also should test (in separate test) that when this callback triggered - certain conditions are met.
The question is should I do connection to real server in any test or I can somehow write some mock for it?
I can emulate server messages in such a way (CoffeeScript code):
but the problem is that xmpp object should be in connected state to do this.
xmpp - 如何使用 JSJaC 库生成节消息?
我想用 JSJaC 生成一个节消息:
问题是我从一开始就不知道子菜单的数量,所以我必须使用循环。我努力了
我得到错误。我还尝试制作一个字符串并将其变成对象,而不是循环,但没有成功。
有任何想法吗?
javascript - Ejabberd 在可用后关闭 BOSH 会话
我无法弄清楚为什么 Ejabberd(14.07 和 14.12)在收到同一会话的“可用”节后关闭 BOSH 会话。
我正在使用 JsJac 作为 Web 客户端库,并且会话正在预绑定服务器端,JsJac 在第一页加载时执行“继承”,并且在重新启动时执行。发生这种情况的情况是在成功连接和聊天之后,我使用 chrome 开发人员工具禁用了网络连接。
Ejabberd 每 15 秒 ping 一次,并在超时时设置为“kill”。ejabberd.yml 中 BOSH 的 Inactivity_timeout 设置为 480。
然后,用户可以单击链接以尝试重新连接。这是调用与初始预绑定+客户端继承完全相同的函数。在看似成功重新连接后,几秒钟后,这是:
Close session for
anonymous.c6502a950667fc79c3e1534559cc02e0@localhost/7f317c7fcbb9fb1b79c414c2d8afe05c
出现在 ejabberd 日志中,并且在聊天中向对方发送了一个不可用的节。
问题:有人知道为什么 BOSH 会议可能会关闭吗?
这是Ejabberd日志的相关部分