猿问

php使用swoole搭建了websocket服务器,前端页面构建长连接之后如何后端主动往前端发送数据(如何触发)

我构建了一个socket服务器, 接收硬件传送来的数据。处理并传入数据库。
我想通过websocket实时的在前端显示数据。该如何办到。

如何在socket中给websocket发送命令,告诉websocket下发数据。
或者如何让websocket知道socket接收到数据并做了处理了。

原本想通过websocket中多开个线程。在不影响websocket收发数据的情况下, lpop等待队列, 可是不知道该怎么开出这个线程。。。。求指教!!!!!!!

拉丁的传说
浏览 777回答 4
4回答

狐的传说

1、PHP哪儿线程?即便你用swoole,也一样,哪儿有什么线程2、其次是这种问题建议你配合一个结构图,以及场景使用者 我单方面认为,你这个前端页面就是给公司内部用的,这样我觉得你都完全没必要用什么websocket,AJAX轮询查数据库就行了,也就是说这个前端所处的流程后置了,这样似乎也能解决你的问题,而且内部人用,用AJAX轮询一般数据库都能吃得消。 如果非要按照你说的那样,引入一层消息队列就行了。socket收到硬件发来的请求后,“双写”一下,一个是写到数据库,另一个写到消息队列,就是充当了生产者角色。消息队列的另一头,就是websocket作为消费者就可以了,不断从消息队列中读消息然后send给前端即可。消息队列可以用redis充当一下,没问题的。 [编辑补充:为了防止被杆精纠缠,补充一下:PHP有多线程,pthread扩展;swoole内也有多线程,就是master进程中的reactor线程]

倚天杖

现在我的一种解决方法是使用了redis的订阅

蛊毒传说

我是在前端写了一个cookie,前端建立链接的时候就用cookie为键把这个链接记下,前端断开时清除这条,或者超过一定时间清除,需要发消息的时候就用cookie找链接发消息,或者直接循环全部发一遍
随时随地看视频慕课网APP
我要回答