thinkjs 使用websocket如何觸發推送消息的方法

       使用thinkjs 作爲項目後臺,添加websocket希望推送一些實時消息,根據官網配置好後,發現我的需求是定時任務篩選數據推送給前臺,定時任務是個action寫在一個獨立的controller裏面,此action還調用了model裏面的一個公共方法,我想在model的公共方法裏面觸發emit方法,推送事件給前臺頁面,但是一直報emit is not a function

探索第一步:我將model的公共方法移到websocket.js 此controller裏面作爲一個action(因爲這個裏面的openAction 和closeAction是可以調用emit的)

探索第二步:如何在我的定時任務controller 的action裏面調用websocket.js裏面的action是個問題,通過查看官網

const websocket = this.controller('websocket');//拿到controller

const data = await websocket.****Action(arg1,arg2);//一定要帶上Action,可以傳參

探索第三步:在websocket的action裏面觸發emit,不過發現,如果採取openAction裏面的this.emit觸發是無法找到emit的方法,又查看官網

先試了this.ctx.req.io,報錯,接着試了this.ctx.app.websocket.io 終於可行^_^!

到此實現推送消息到前臺的功能。消耗我快兩天時間o(╥﹏╥)o

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章