簡體   English   中英

Socket.io Middlewhere函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM