node做服务器监听时,监听到data,通过回调获得data值,我该如何在另一边客户端来请求时,将data发送过去,监听事件我已经初始化好了的。我的意思是如果在客户端请求那边写入事件监听,那就会开启很多监听事件。如果把监听得到的data存入一个对象中,我在客户端请求时,从这个对象中拿的话,我只能拿到上次存入的data,永远不可能拿到最新的data(会出现先后问题)…
@Kyoloro socket长连接的话需要用一个json给所有的socket编号:
var pool = {
'1': socket1,
'2': socket2,
'3': socket3
}
后面拿到data的逻辑就是 data发给谁就 pool[target].write(data);
。
在编号之前,可能需要实现登陆逻辑,判断那个socket是谁。
@alsotang 已经解决了…原来 回调函数能作为参数传递,还能作为像指针一样的 跟一个标示符token存到一个json格式变量里面,放入监听事件的回调函数里面,监听事件触发响应到数据,然后通过返回的数据里的token去查json格式变量从而调用存在其中的回调函数,对应上参数就能实现功能了。。
对应的伪代码 可以是这样:
//chunk 为客户端请求数据 JSON格式
var chunk = request.payload.xxxx;
this.sendData(chunk,function(err,data){
if(data){
//实现业务功能
}else{
//汇报相应地错误
}
});
sendData:function(data,listener){ data.Token = random_Token(); LISTENERS[data.Token] = listener; server.write(data);//向另一端服务器发送数据 } //作监听事件 server.on('data’,function(data){ var token = data.token; var listener = LISTENERS[token]; listener(null,data);//调用回调函数,实现功能 });