假设我们有一个简单的回显服务器(在第一次请求时调整为更长):
var waiting = 8000;
io.on('connection', function(socket){
socket.on('doEcho', function (data) {
setTimeout( function () {
socket.emit('echoDone', data);
}, waiting);
waiting = 1;
});
});
然后说一个index.html
客户端脚本:
askEcho ("11111", function (resp) {
console.log("answer for 11111 " + resp);
});
askEcho ("22222", function (resp) {
console.log("answer for 22222 " + resp);
});
以下错误函数在哪里askEcho
,伪装成 RPC 存根:
function askEcho (text, fun) {
socket.emit('doEcho', text);
socket.on('echoDone', function (data) {
fun ( data );
});
}
显然我得到的是以下混乱
接听 11111 22222 回答 22222 22222 回答 11111 11111 接听 22222 11111
因为我为同一个事件安装了两个监听器。这可以很容易地解决,但我不清楚如何在客户端正确排序响应,而无需服务器端的帮助(更多编程)。
这一切似乎有点太多的负担。不能askEcho
正确和容易地编码功能吗?