nodejs中使用socket-io,如何维护服务器应答数据与emit数据的正确对应关系?

静宜常乐
  • 30

需求说明

浏览器客户端有如下数据
|id|姓名|地址|注册时间|
|1|张三|北京|?|
|2|李四|上海|?|

我需要依据id到服务器查询用户的其他信息,比如注册时间,因数据较多,我使用socket.io提交数据到服务端,服务端依据id查询到信息后再通过事件返回。

难点说明

这里是异步查询事件,不知道服务端何时返回,而且返回的顺序与emit发送查询的顺序不一样。
这里需要维护发送的数据和服务端返回数据的关系,即客户端需要知道服务端返回的数据是哪个id查询的结果,再与客户端的数据进行合并在表格中显示。而且也不知道什么时候服务器已处理并已返回所有数据。

这种需求该如何处理呢?客户端使用Vue,如何才能做到渲染更加高效?

回复
阅读 2.4k
4 个回答

这种情况不合适使用 socket, socket 撤了吧,

查询信息中加一个不重复的id,比如递增的整数序列,回复中放同样id。这样客户端可以把双向信息配对。

另外和渲染没有关系。

过客2017
  • 5
新手上路,请多包涵

增加一个head,来定义。如
{
head:{id:xxx}, //这个id是唯一值,可以用自增的整数就可以
data:{} //你的数据
}

jedilee
  • 130

定义两个计数器A和B,A和B值都为需要查询的总条目数,每发送一个查询到服务端A自减1,每收到一个结果B自减1并检查AB两个计数器都已置零,至于数据的对应可以在返回结果里原样返回id字段判别。

宣传栏