我正在使用node-xmpp服务器作为2个客户端的聊天服务器:Psi和Spark.I为每个客户端注册一个帐户。我想从Psi帐户向Spark帐户发送一条消息。每次我发送一个来自同一帐户的帐户收到消息的消息。我想将朋友添加到我的列表中(我不知道为什么不工作......可能没有实现)并正确发送消息。我正在使用节点xmpp服务器/examples/server-and-client.js.感谢建议。
答案 0 :(得分:1)
使用正确的客户端连接发送消息,即
1)。在验证时将客户端的所有连接存储在一个数组中
2)。当消息到来时,找到与" to"相关联的正确客户端。消息节中的字段
var receiverCleint = getClient(msgStanza.attrs.to)
3)。返回正确的客户端并通过该客户端发送消息
receiverCleint.send(msgStanza)
我也正在研究相同的演示,我唯一担心的是当更多用户添加时,这将是一个问题,因为它必须通过所有客户端迭代每条消息。
任何更好的方法都会受到赞赏。
<强>代码:强>
var clients = new Array();
c2sRouter.on("connection", function(client){
client.on("register", function(opts, cb){
console.log("client server", "register");
})
client.on("authenticate", function(opts, cb){
console.log("client server", "authenticate");
if(opts.password === "tushar" || opts.password === "tushar1"){
clients.push(client);
cb(null, opts);
}else{
cb(false, opts);
}
})
client.on("online", function(){
console.log("client server", "online");
})
client.on("stanza", function(stanza){
console.log("client server", stanza.toString());
if(stanza.is("message")){
var receiverClient = getClient(stanza.attrs.to)
if(receiverClient === undefined){
client.send(stanza);
} else {
receiverClient.send(stanza);
}
}
})
client.on("disconnect", function(){
console.log("client server", "disconnect");
})
})
var getClient = function (to) {
var clientLength = clients.length;
var client
var clientId;
for(var i = 0; i < clientLength; i++){
client = clients[i];
clientId = client.jid.user + "@" + client.jid.domain
if(to.indexOf(clientId) == 0){
return client;
}
}
}