使用 Javascript 连接到 XMPP 服务器

Posted

技术标签:

【中文标题】使用 Javascript 连接到 XMPP 服务器【英文标题】:Connecting to XMPP server with Javascript 【发布时间】:2016-03-21 07:03:50 【问题描述】:

所以,从现在起 2 天后,我一直在尝试开发这个。问题是:我有一个使用 XMPP 协议处理聊天的服务器。我必须连接到它,但我正在开发一个 Phonegap/Cordova 应用程序,并且没有插件。

我尝试使用 Strophe.js 连接到服务器,但没有成功。服务器要求我使用普通身份验证,并且已经为我提供了一个编码密码。

示例代码:

$scope.onConnect = function(status)
    if (status == Strophe.Status.CONNECTING) 
        $scope.connStatus = 'Strophe is connecting.';
     else if (status == Strophe.Status.CONNFAIL) 
        $scope.connStatus = 'Strophe failed to connect.';
     else if (status == Strophe.Status.DISCONNECTING) 
        $scope.connStatus = 'Strophe is disconnecting.';
     else if (status == Strophe.Status.DISCONNECTED) 
        $scope.connStatus = 'Strophe is disconnected.';
     else if (status == Strophe.Status.CONNECTED) 
        $scope.connStatus = 'Strophe is connected.';
    


$scope.chatConnect = function(ID, xmppToken)
    connection = new Strophe.Connection('chat.server.com');
    Strophe.SASLPlain.priority = 99;
    Strophe.SASLAnonymous.test = function() 
        return false;
    ;
    Strophe.SASLMD5.test = function() 
        return false;
    ;
    Strophe.SASLSHA1.test = function() 
        return false;
    ;
    connection.rawInput = function(data)alert("Input: " + data);;
    connection.rawOutput = function(data)alert("Output: " + data);;
    connection.connect(ID, xmppToken, $scope.onConnect);

我也愿意接受新图书馆的建议! 提前致谢。

【问题讨论】:

试试 Quickblox xmpp 服务器,我用过这个,它在 phonegap 应用程序中工作。 我在 Cordova 应用程序中使用 Strophe.js 没有问题,但我通过普通凭据(通过 HTTPS 连接)连接到 XMPP 服务器。 @beaver 你能给我一个你是怎么做到的例子吗? 在这里查看我的答案***.com/questions/34453122/… 我认为你应该参考这个:github.com/arjunsk/Ionic-Chat-App 这还没有完成。但这将是创建聊天客户端的一个非常好的开始。 【参考方案1】:

这是一个部署在 Plunker 上的 Ionic 聊天应用程序的非常简单的示例(需要将 XMPP 服务器部署为 localhost):http://plnkr.co/edit/i3at7UvgqHaiL8NzN2k3

所以在您的控制器中,代码可能是:

$scope.usr = username: 'hello@test.com', password: 'pippo', connected: false;

var server = 'test.com';  // adapt to your server config (domain)
var xmpp_server = 'http://127.0.0.1:7070/http-bind/';
var connection = null;

$scope.connect = function (usr) 
    connection = new Strophe.Connection(xmpp_server);
    connection.connect(usr.username, usr.password, onConnect);

带有 Strophe.js 使用示例的其他 Plunker:

http://plnkr.co/edit/EhQHDsYpDhrECmaaIlZO

http://plnkr.co/edit/F8cbsBZQUPiZ0W1v0O89

【讨论】:

idk,它应该可以工作。我正在连接到在线 XMPP 服务器。使用 jacasr 我可以连接,但我将应用程序移植到 Mobile 并且 Jacasr 在那里不起作用。这个也不行。

以上是关于使用 Javascript 连接到 XMPP 服务器的主要内容,如果未能解决你的问题,请参考以下文章

连接到 XMPP 服务器

如何使用 PHP 连接到 XMPP 服务器

在浏览器中使用 xmpp.js 连接到 XMPP 服务器

无法使用 HTTP 绑定连接到 XMPP 服务器(openfire)

无法使用 aSmack 连接到本地 XMPP 服务器

使用 java 连接到 xmpp(openfire) 服务器时出错