xmpp消息不发送给选定的朋友

我正在使用平均堆栈应用程序,现在我需要使用XMPP协议来创build聊天模块。
我是XMPP新手,我在节点js中使用了“node-xmpp-server”和“node-xmpp-client”, 在angular色js中使用了“Strophe.js”

我的代码如下:

app.js(服务器端文件)

"use strict"; var express = require("express"); var https = require('https'); var http = require("http"); var fs = require('fs'); var app = express(); var xmppClient = require('node-xmpp-client'); var xmppServer = require('node-xmpp-server'); var AES = require("crypto-js/aes"); var CryptoJS = require("crypto-js"); /** * @description all process variables */ require("./config/vars")(app); var hostName = global.hzConfig.qualifiedHostName; var config = require("./config/config.js")(app, express); var friendsArr = []; var server = null var startServer = function(done) { // Sets up the server. console.log("start server....."); console.log('xmpp server is listening on port ' + global.hzConfig.xmppServerPort + " on " + process.pid + ' !'); server = new xmppServer.C2S.BOSHServer({ port: global.hzConfig.xmppServerPort, domain: 'localhost' }) console.log("server"); console.log(server); // On connection event. When a client connects. server.on('connection', function(client) { // That's the way you add mods to a given server. // Allows the developer to register the jid against anything they want console.log('connection'); client.on('register', function(opts, cb) { console.log('REGISTER') cb(true) }) // Allows the developer to authenticate users against anything they want. client.on('authenticate', function(opts, cb) { console.log('server:', opts.username, opts.password, 'AUTHENTICATING') if (opts.password === '') { console.log('server:', opts.username, 'AUTH OK') cb(null, opts) } else { console.log('server:', opts.username, 'AUTH FAIL') cb(false) } }) client.on('online', function() { console.log("client"); console.log(client.jid); console.log('server:', client.jid, 'ONLINE'); friendsArr.push(client.jid); console.log("friendsArr================>>>>>>>>>>>>>"); console.log(friendsArr); //client.send(new xmppClient.Message({ type: 'chat' }).c('body').t("Hello there, little client.")); }) // Stanza handling client.on('stanza', function(stanza) { console.log(stanza); console.log('server:', client.jid, 'stanza', stanza.toString()) var body = stanza.getChild('body'); var message = body.getText(); console.log("body===========>>>>>"); console.log(body); console.log("message===========>>>>>"); console.log(message); var from = stanza.attrs.from; stanza.attrs.from = stanza.attrs.to; stanza.attrs.to = friendsArr[0]; console.log("stanza.attrs"); var sendTo = "laxman@mailinator.com/"; friendsArr.map(function(obj) { if (obj["user"] === "laxman") { console.log(obj["_resource"]); sendTo = sendTo + obj["_resource"]; } }); //client.send(stanza) // client.send(stanza) //console.log("stanza.attrs.from"); //console.log(stanza.attrs.from); console.log("sendTo++++++++++ ::::: " + sendTo); var stanza = new xmppClient.Element('message', { to: sendTo, type: 'chat', 'xml:lang': 'ko' }).c('body').t('aaaaaMessage from admin1'); client.send(stanza); console.log(stanza); //client.send(new xmppClient.Message({to : sendTo, type: 'chat' }).c('body').t("Hello there, little client.")); }) // On Disconnect event. When a client disconnects client.on('disconnect', function() { console.log('server:', client.jid, 'DISCONNECT') }) }) server.on('listening', function() {}) } startServer(); 

message_service.js(客户端文件)

 (function() { 'use strict'; angular .module("myApp") .factory("HzXMPPService", ['$rootScope', '$cookies', '$location', 'HzServices', function($rootScope, $cookies, $location, HzServices) { console.log("*****************************************"); return { OnConnectionStatus: function(conn, obj) { console.log("conn"); console.log(conn); console.log("Strophe.Status"); console.log(Strophe.Status); this.OnConnected(conn); }, OnConnected: function(conn) { console.log("OnConnected call"); //Callback fired when availability status of your's or your friends changes. conn.addHandler(this.OnPresenceStanza, null, "presence"); //callback fired while receiving message conn.addHandler(this.OnMessageStanza, null, "message"); //callback fired when a friend/authorize request is received conn.addHandler(this.OnSubscribeStanza, null, "presence", "subscribe"); //callback when your friend/authorize request is responded by another user. conn.addHandler(this.OnSubscribedStanza, null, "presence", "subscribed"); //send presence to all who have added you to their contact list ie, send online status to other clients. We are sending "available" status //conn.send($pres()); }, OnPresenceStanza: function(stanza) { console.log("OnPresenceStanza call"); var sFrom = $(stanza).attr('from'); console.log("sFrom"); console.log(sFrom); var sBareJid = Strophe.getBareJidFromJid(sFrom); console.log("sBareJid"); console.log(sBareJid); var sTo = $(stanza).attr('to'); console.log("sTo"); console.log(sTo); var sType = $(stanza).attr('type'); console.log("sType"); console.log(sType); var sShow = $(stanza).find('show').text(); console.log("sShow"); console.log(sShow); //OnSubscribeStanza(); //OnSubscribeStanza(); //sendAuthorizeRequest(); sendMessage(); return true; }, //callback is also fired when other user is typing or paused. OnMessageStanza: function(stanza) { console.log("OnMessageStanza call"); console.log(stanza); var STo = $(stanza).attr('to'); console.log("to"); console.log(STo); var sType = $(stanza).attr('type'); console.log("sType"); console.log(sType); var sBareJid = Strophe.getBareJidFromJid(STo); console.log("sBareJid"); console.log(sBareJid); var sBody = $(stanza).find('body').text(); console.log("sBody"); console.log(sBody); if (sBody) { console.log("A Message Received: " + sBody + " From " + STo); } return true; }, OnSubscribeStanza: function(stanza) { console.log("OnSubscribeStanza call"); if (stanza.getAttribute("type") == "subscribe") { var from_id = stanza.getAttribute("from"); console.log("from_id"); console.log(from_id); //send back authorize request to accept it. conn.send($pres({ to: from_id, type: "subscribed" })); } return true; }, OnSubscribedStanza: function(stanza) { console.log("OnSubscribedStanza call"); if (stanza.getAttribute("type") == "subscribed") { var from_id = stanza.getAttribute("from"); //send back confirm authorize request. conn.send($pres({ to: from_id, type: "subscribed" })); } return true; }, //make a friend request sendAuthorizeRequest: function() { conn.send($pres({ to: "rahul@mailinator.com", type: "subscribe" })); }, //disconnect from XMPP server disconnect: function() { console.log("connected disconnect"); conn.flush(); conn.sync = true; conn.disconnect(); }, //send a message. sendMessage: function(conn, msg) { console.log("Friends call ....."); console.log("conn.jid"); console.log(conn.jid); //return false; var message = $msg({ to: "laxman@mailinator.com", from: conn.jid, type: "chat" }).c("body").t(msg); conn.send(message.tree()); }, onMessage: function(message) { console.log('service message = '); console.log(message); return true; }, createAccount: function() { conn = new Strophe.Connection("localhost"); conn.register.connect("localhost", OnConnectionStatus, 60, 1); } } } ]); }()); 

为了testing,我使用静态用户在服务器端文件中向Laxman发送消息。

我的主要问题是消息不能播放给我的朋友。