如何在socket.io上执行RPC?

 carefulff 发布于 2023-01-12 13:37

假设我们有一个简单的echo服务器(在第一次请求时调整得更长):

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 );
     });
  }

显然我得到的是下面的混乱

answer for 11111  22222
answer for 22222  22222
answer for 11111  11111
answer for 22222  11111

因为我为同一个事件安装了两个监听器.这可以轻松解决,但我没有看到如何在客户端正确订购响应,没有服务器端的帮助(编程更多).

这一切似乎都有点太多的负担.不能askEcho正确编码的功能吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有