2016-04-29 49 views
0

我試圖添加一個通知系統。如果用戶登錄並執行操作,則應該將通知發送給其他用戶(如果他已登錄)。我已使用express在node.js中創建了我的應用程序。我知道我必須使用套接字,但事件需要如何處理?如果有人能讓我知道我可以遵循這個任務的任何參考或樣本?使用node.js,express,套接字實現通知系統

+0

目前還不清楚是哪一部分失蹤。在我的聊天中,事件由socket.io客戶端處理,我使用[Notification](https://developer.mozilla.org/en/docs/Web/API/notification)API將其顯示給用戶([相關的代碼](https://github.com/Canop/miaou/blob/master/src%2Fmain-js%2Fmiaou.horn.js#L65)) –

+0

@NKMY你嘗試過什麼嗎?或者你想知道套接字如何工作? –

+0

您可以閱讀這篇文章作爲參考http://www.gianlucaguarini.com/blog/nodejs-and-a-simple-push-notification-server/ 總之,您需要維護全球用戶在線列表和他們各自的插座連接。因此,無論何時用戶進行任何操作,您都可以使用全局列表來選擇您的目標用戶。 –

回答

1

我只是做了類似的事情和處理這樣的:

io.js - 中央的node.js文件,我處理新connnections和存儲IO

var io = require('socket.io')(); 

io.on('connection', function(socket){ 
console.log("Socket established with id: " + socket.id); 

socket.on('disconnect', function() { 
    console.log("Socket disconnected: " + socket.id); 
}); 

}); 

module.exports = io; 

someroute.js - 我想在node.js服務器應用程序中發送消息

var appRoot = require('app-root-path'); 
var io = require(appRoot + '/server/io'); 

/*your code, somwhere you will call the 
* function below whenever you want to emit 
* the 'user_did_action' event: 
*/ 
if(user.didNewStuff()){ 
emitUserAction(user); 
} 

var emitUserAction = function(user){ 
    io.sockets.emit('user_did_action', user); 
}; 

client_javascript.js - 某些客戶端JS(在我的情況下角,但它事doesent),導入socket.io LIB,然後訪問某個客戶端這樣的:

/*connect to the server*/ 
var socket = io.connect(); 

/*do something wen the event 'user_did_action' 
* is received, just invoke the callback 
* 
*in the function param data, you will have the same 
*data you emitted earlier in the server, 
*in this example the user object!*/ 
socket.on('user_did_action', myFunctionToHandleTheEvent(data)); 
+0

感謝您的幫助。您是否知道提供此套接字通知的實用程序類的任何參考或示例。 – NKMY

+1

[這裏](https://codeforgeek.com/2015/09/real-time-notification-system-using-socket-io/),你可以找到一個相當詳細的教程/通知應用程序的例子,使用node.js和socket.io – risuch

+0

感謝@risuch的鏈接。 – NKMY