[英]Socket.io middlewhere functions
我試圖在我的socket.io服務器中分離邏輯,但是遇到一些問題。
例如說我有以下內容:
io.on('connection', function (socket) {
var fileModule = require('./costum_modules/FileModule.js')(io);
app.use(fileModule);
});
現在在fileModule
內部,我有以下代碼:
var fileModule = function (socket) {
socket.on('userData', function(msg){
var i = 0;
});
}
module.exports = new fileModule();
可悲的是我沒有定義套接字。
我的問題是我可以這樣做嗎,還是無法將單例傳遞給另一個文件並使其從同一對象讀取?
您可以使用其他文件來破壞邏輯,但是代碼有幾個問題。
首先,我認為Hacketo是正確的,您不想執行new fileModule()
,只是:
module.exports = fileModule;
其次,在調用require時,您正在傳遞全局socketIO對象( io
)。 您應該將在連接處理程序中獲得的socket
傳遞給它。 例如
require('./costum_modules/FileModule.js')(socket);
我認為這樣可以將您的一些socket.io消息處理代碼移至模塊中。 現在,您的套接字將響應來自客戶端的userData
消息。 但是,除非您有一些自定義應用程序,否則我認為app.use
不會做您期望的事情。 您不能將Web套接字處理程序掛接到Express / Restify / Connect /任何中間件鏈中。 但是您可以編寫一個將消息發送到套接字服務器的中間件。
如果您只是想在應用程序和套接字服務器之間共享會話,請嘗試以下SO答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.