请问PC和手机页面应该怎么同步?

一个网站有PC端和手机端,PC端有一个反馈页面,用户可以填表单,而页面上还有个二维码,用户用手机扫码后,跳到手机端的反馈页面,此时PC端页面显示“正在使用手机填表”,手机端显示表单。

用户在手机上填完,提交后,PC端和手机端同时显示“已收到您的反馈”。

最简单的办法当然是轮询,我想肯定有更好的办法吧?要求使用PHP解决,可以用Redis、Workerman,但 Swoole 暂不能用。

请大致描述一下实际步骤,不要扔下一句“用XXX可以解决”便闪人,这里还需要追踪用户身份,因为不是任何人都可以反馈的,而是先经历一些操作。

谢谢!

阅读 3.5k
3 个回答

如果是想时刻与服务器通信,获取用户操作状态,可以用 websocket

既然pc页面打开了,pc页面上有二维码,那么这个二维码应该是动态生成的。根据打开的pc的网址生成的,当然每个人打开的pc网址,虽然页面网址相同,但是游客身份不同。

其实轮询的方法比较适合php,每隔1秒执行一次。

我也准备用 WebSocket 与 PC 端建立双向信道,但现在的主要问题是,当手机端页面提交表单后,处理这次提交的服务器进程是 Nginx 的某个子进程,而 WebSocket 进程是另一个进程,这俩进程间如何通信呢?Nginx子进程怎么告知 WebSocket 进程向某个 UID 的用户发送消息?

在 WebSocket 进程里应尽量避免发出与客户端通信无关的阻塞调用,特别是那种阻塞时间没法确定的(读写文件或连接数据库的话,通常很快就能完成,但等待事件发生就没法说了)。

难道是从 Nginx 子进程打开一个套接字,连到 WebSocket 进程,以 WS 协议把 UID 传过去,后者利用 UID 找出之前建立好的 PC 端套接字,发出通知。。。

推荐问题