[英]SailsJS, SocketIO, not getting messages
我有一個簡單的登錄腳本。 我在SessionController中創建了一個名為create的方法來處理登錄。 我執行所有必需的驗證,然后將用戶設置為活動並保存它們。 我還使用User.publishUpdate()
將消息發送回客戶端。
問題是我根本沒有收到任何消息。 當頁面加載時我調用User.subscribe(req.socket, users);
對於所有用戶,所以他們都訂閱了。 不確定為什么不發送消息。
我使用風帆0.10.0。
這是在頁面加載時調用的subscribe方法:
User.find({}).exec(function (error, users) {
if (error) {
res.json({
error: error
});
}
// Subscribe to the model class
User.subscribe(req.socket);
// subscribe to the model instance
User.subscribe(req.socket, users);
res.send(200);
});
和登錄的創建方法(刪除與此問題無關的代碼):
user.active = true;
req.session.authenticated = true;
req.session.User = user;
user.save(function (error, user) {
if (error) {
res.send(error, 500);
}
User.publishUpdate(user.id, {
loggedIn: true,
id: user.id,
action: ' has logged in'
});
res.json(user, 200);
});
我通過套接字將請求發送到訂閱和登錄方法
socket.get('/user/subscribe');
socket.get('/session/create', {//stuff}, callback)
使用Sails v0.10,PubSub已經發生了很大變化,看起來你正在使用一些v0.9.x語義。 您可以在遷移指南和新的模型方法參考中閱讀所有相關內容,但就您的影響而言,主要是:
不再使用“message”事件發布消息。 相反,它們使用模型的標識作為事件名稱發布。 所以,將你的聽眾改為:
socket.on('user', callback)
你會開始聽到一些東西。
與你有關的另一件事是不推薦使用“Model classrooom”,因為使用帶有一個參數的.subscribe()
來訂閱它。 而是使用User.watch(req)
來獲取有關新創建的用戶的通知。
與.watch()
方法一起更新 , sails.config.blueprints
(在config/blueprints.js
文件中設置)現在還有一個autoWatch
選項,如果為true
,將恢復為v0.9.x行為:套接字訂閱模型實例時,它也會開始“觀察”該模型類的“創建”事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.