我正在创建客户服务聊天应用程序,从客户端网站获取数据到node.js服务器,然后将此数据发送给代理,代理回复客户端..
服务器代码:
var ws = require("nodejs-websocket");
var clients = [];
var server = ws.createServer(function(conn){
console.log("New Connection");
//on text function
conn.on("text", function(str){
var object = JSON.parse(str);
conn.sendText("Message send : " + object);
console.log("User ID: " + object.id);
clients.push(object.id);
var unique=clients.filter(function(itm,i,a){
return i==a.indexOf(itm);
});
/*
conn.on('message', function("test") {
console.log('message sent to userOne:', message);
unique[0].send("Message: " + message);
});
*/
console.log("Number of connected users : " + unique.length);
//closing the connection
conn.on("close", function(){
console.log("connection closed");
});
});
}).listen(process.env.PORT, process.env.IP);
一切都很完美,我有每个客户ID但是 我想回复该客户端ID的消息..
我尝试了什么:
我尝试使用conn.send("message", callBackFunction)
回复客户端,但是发送给所有没有指定用户ID的客户端。
答案 0 :(得分:0)
免责声明:Ably - simply better realtime
的联合创始人我怀疑你有两个问题。首先,如果您需要扩展到多个服务器,那么您就会遇到问题,因为您需要弄清楚如何在服务器之间传递消息。其次,你无法在断开will happen as part of normal behaviour for clients之间保持状态。
业界通常使用渠道概念来解决这类问题,因为它可以扩展,它将发布者与订阅者分离,这是一个非常简单的概念。例如,如果您有一个名为“client:1”的频道并且您发布到该频道,并且您的订阅者正在该频道上进行侦听,那么他们将收到该消息。您可以找到有关我们designed our realtime service around channels的更多信息,我建议您在系统中考虑这种模式。
Matt,联合创始人,Ably