[英]How best to integrate socket.io with rest in Angular2
當用戶與數據庫交互時,我想在Angular(6)應用程序中進行實時更新,因此我正在使用socket.io進行此操作。
例如,我有一個工作組件/表單/服務,而我目前的方法是:
job
從job-form
提交到job.service
: 這將調用一個http帖子來表達(並返回一個可觀察到的):
return this.http.post(api_url + '/jobs/', job);
將job
插入mongoDB並返回成功
socket.service
上的一個函數,該函數向服務器發出套接字消息 socket.service
聽到此消息並從job.service
更新作業 這可以正常工作,但似乎很費勁...有更好的方法嗎? 我可以使用套接字並繞過Express REST API嗎?
基本上,您是將作業發布到服務器上,然后在客戶端上獲得成功,然后再次通過套接字推送成功,然后通過socket.io流向前端的其他人。 更好的方法是通過套接字發出新作業,在套接字中您可以保存新作業,成功后可以向所有人發出。 另一種方法是偵聽mongoDB中的更改( https://www.mongodb.com/blog/post/an-introduction-to-change-streams )並發布給其他人。
也許最好的方法是這樣的:
const app = express();
const server = require('http').Server(app);
const io = require('socket.io').listen(server);
app.set('socketio', io);
例如,在您的路線中,您可以執行以下操作:
var io = req.app.get('socketio');
io.emit('room', 'hi'); // this will emit 'hi' in room 'room'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.