Javascript socket.io自定义事件的确认

Javascript socket.io自定义事件的确认,javascript,performance,node.js,socket.io,Javascript,Performance,Node.js,Socket.io,我正在寻找一种方法来确认socket.emit调用 socket.emit('message', msg); 我见过这样一种机制,接收者将发送另一个自定义事件作为确认,但这将在我的聊天应用程序中添加数千个传输。请建议一个有效的方法。emit方法的第三个参数接受一个回调,该回调将被传递到服务器,以便您可以调用任何您想要的数据作为确认。它实际上非常方便,并且省去了配对呼叫响应事件的工作量 我正在用我刚刚测试过的代码更新我的答案 首先在服务器端: io.sockets.on('connection'

我正在寻找一种方法来确认socket.emit调用

socket.emit('message', msg);

我见过这样一种机制,接收者将发送另一个自定义事件作为确认,但这将在我的聊天应用程序中添加数千个传输。请建议一个有效的方法。

emit方法的第三个参数接受一个回调,该回调将被传递到服务器,以便您可以调用任何您想要的数据作为确认。它实际上非常方便,并且省去了配对呼叫响应事件的工作量

我正在用我刚刚测试过的代码更新我的答案

首先在服务器端:

io.sockets.on('connection',函数(sock){
log(“连接的客户端”);
sock.emit('connected'{
连线:“耶!”
});
//客户端将“callback”作为函数传递
//客户端的代码将运行
sock.on('testmessage',函数(数据,回调){
log('套接字(服务器端):收到消息:',数据);
var响应数据={
string1:'我喜欢',
第二条:“香蕉”,
第三条:“老兄!”
};
//log('连接数据:',evData);
回调(应答数据);
});
});
客户端:

console.log('starting connection…');
var socket=io.connect('http://localhost:3000');
socket.on('error',函数(evData){
console.error('连接错误:',evData);
});
//“已连接”是我们的自定义消息,让我们知道用户已连接
socket.on('connected',函数(数据){
log('套接字连接(客户端):',数据);
//现在我们已经连接好了,让我们用callback发送测试调用
socket.emit('testmessage'{
有效载荷:“让我们看看这是否有效”
},功能(响应数据){
log('使用数据调用的回调:',responseData);
});
});

请参阅,查找是否获得确认。我无法验证此
a.socket.emit(“echo”,{payload:'test'},function(){console.log(“success”)}
从未被记录,但我收到了回音(9.16)是的,在房间里browser@megawac您需要从接收端调用确认函数,同时请记住,“连接”事件不允许您进行确认。在这种情况下,您确实需要一个您自己发出的成对响应事件。socket.on('adminMessageClient',function(data,userID,callback){callback(“Ack response from server”);});服务器中的此语句正在引发错误回调(“来自服务器的Ack响应”);^TypeError:undefined不是套接字上的函数。(/var/node_server/newChatServer.js:141:3)位于SocketNamespace.handlePacket(/var/node_server/node_modules/Socket.io/lib/namespace.js:335:22)的Socket.EventEmitter.emit[as$emit](events.js:101:17)