如何从Javascript连接到XMPP服务器

如何从Javascript连接到XMPP服务器,javascript,xmpp,Javascript,Xmpp,我一直在四处寻找有关XMPP和JavaScr、ECMAScript和XMPP的信息。在做了一些研究之后,我发现了Strophe。它看起来很有趣,我能够编译一些代码(对我来说总是一个起点:),但实际上没有建立任何联系。那时我意识到(多亏了更多的研究)a)我不能真正连接到与发出页面响应的服务器不同的服务器,因为这可能是某种跨站点脚本,或者什么都不是,b)我试图连接的服务器(Google Talk)没有任何废话。 所以我的问题有两方面: 1) 我可以使用javascript从我的服务器发布的页面连接到

我一直在四处寻找有关XMPP和JavaScr、ECMAScript和XMPP的信息。在做了一些研究之后,我发现了Strophe。它看起来很有趣,我能够编译一些代码(对我来说总是一个起点:),但实际上没有建立任何联系。那时我意识到(多亏了更多的研究)a)我不能真正连接到与发出页面响应的服务器不同的服务器,因为这可能是某种跨站点脚本,或者什么都不是,b)我试图连接的服务器(Google Talk)没有任何废话。 所以我的问题有两方面: 1) 我可以使用javascript从我的服务器发布的页面连接到一个普通的XMPP服务器(比如Facebook聊天或Google聊天)吗?(无插件) 2) 如果是,怎么做?斯特罗弗能行吗?(我也听说过很多关于WebSocket的事情,不太确定它们是什么,或者它们是否有效。)
谢谢

为了通过HTTP协议连接到各个域进行数据交换,JS受到限制,因为由于跨站点脚本限制,POST请求被禁止(可以通过IFRAME tho完成,但对于大多数目的来说,这是不可行的)


这就是为什么您要使用首选服务器端语言创建一个代理,该代理连接到多个服务器,并充当JS“连接”到的服务,并使用它向浏览器显示数据。

为了通过HTTP协议连接到各个域以进行数据交换,JS受到限制,因为由于跨站点脚本限制,POST请求被禁止(可以通过IFRAME-tho完成,但对于大多数目的来说,这是不可行的)


这就是为什么你要用你喜欢的服务器端语言创建一个连接到多个服务器的代理,它充当你的JS“连接”到的服务然后用它向浏览器显示数据。

那么,你真正想做的是让你的网站为访问你网站的人提供Google Talk/Facebook聊天功能?差不多,但网站的整体理念是它不是一个网站。这是一个基于网络的聊天客户端…如果有意义的话。这就像加载GoogleTalk的FlashWeb客户端一样,只是我们不想让它没有Flash。如果不清楚的话,我可以给你一个截图。很清楚你想要实现什么,唯一的问题是你不能按照你想象的方式实现它。为了使用这些聊天,您的用户必须登录其中一个网站。之后,Facebook或Google必须允许您使用用户的数据,这是假定OAuth实现的。之后,您需要访问聊天实现的API。至少据我所知,你不能直接连接到他们的服务器。通过使用iframe并加载站点内容,然后通过JS动态更改布局,您可能能够模拟一些东西。但是,googletalk并不是这样。用户只需通过XMPP进行身份验证。我已经成功地构建了一个WPF GTalk客户机——只需使用任何XMPP身份验证连接对用户进行身份验证即可。如果Facebook有特别的限制,我可以理解。。。但是有没有一种方法可以通过JavaScript连接到外部XMPP服务器呢?如果它是通过JS跨域连接的话——不,没有。这就是为什么你用一些服务器端语言创建自己的代理连接,可以通过http连接到指定的服务器,然后你的JS使用到你自己的(代理)服务器的连接。所以你真正想做的是让你的网站允许访问你网站的人使用Google Talk/Facebook聊天工具?差不多,但网站的整体理念是它不是一个网站。这是一个基于网络的聊天客户端…如果有意义的话。这就像加载GoogleTalk的FlashWeb客户端一样,只是我们不想让它没有Flash。如果不清楚的话,我可以给你一个截图。很清楚你想要实现什么,唯一的问题是你不能按照你想象的方式实现它。为了使用这些聊天,您的用户必须登录其中一个网站。之后,Facebook或Google必须允许您使用用户的数据,这是假定OAuth实现的。之后,您需要访问聊天实现的API。至少据我所知,你不能直接连接到他们的服务器。通过使用iframe并加载站点内容,然后通过JS动态更改布局,您可能能够模拟一些东西。但是,googletalk并不是这样。用户只需通过XMPP进行身份验证。我已经成功地构建了一个WPF GTalk客户机——只需使用任何XMPP身份验证连接对用户进行身份验证即可。如果Facebook有特别的限制,我可以理解。。。但是有没有一种方法可以通过JavaScript连接到外部XMPP服务器呢?如果它是通过JS跨域连接的话——不,没有。这就是为什么您使用某种服务器端语言创建自己的代理连接,可以通过http连接到指定的服务器,然后JS使用到您自己的(代理)服务器的连接。您是指http中的代理吗?但这将无法实现XMPP所做的实时通信。您是指HTTP中的代理吗?但这将无法实现XMPP所做的实时通信。