我正在建立一个门户,学生可以在此进行模拟考试。为此,我需要将用户浏览器上运行的计时器与服务器同步,并在测试运行时将测试的一些其他数据存储在服务器上。
以下是要考虑的用例:
a。在测试开始时,将获取测试数据,并将其存储在socket.io中,并启动计时器-工作
b。在用户执行操作时,将从前端触发事件,并更新socket.io上的测试数据-工作
c。断开连接后,更新的测试数据将保存回数据库(同时数据也存在于套接字io中)-事件在互联网断开连接后延迟了几秒钟
d。重新连接时,套接字上应该有最新可用的测试数据e。在页面刷新时,应将最后可用的测试数据发送回浏览器,然后恢复测试
用例a,b和c正常运行。而在用例d上,在重新连接时,套接字ID在更改,并且用socket.io存储的数据丢失。
为解决此问题,我添加了代码以在重新连接时从数据库取回数据。在断开连接和重新连接之间存在时间间隔的情况下,这种方法效果很好。但是在页面刷新时,不会立即触发断开事件,并且数据库中最后保存的数据将返回给客户端。
是否存在一种使用自定义套接字ID并在断开和重新连接用例发生时将数据持久保存在socket.io上的方法?