2012-08-28 131 views
1

編輯:由於對EventMachine的瞭解不足,因此提出此問題。NodeJS:在不重新啓動的情況下向Socket.IO服務器添加通道

使用Socket.IO接口,我可以與「通道」複用連接。我將如何啓動一個Socket.IO服務器,但添加頻道而不必停止/啓動服務器?

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

var chat = io 
    .of('/chat') 
    .on('connection', function (socket) { 
    socket.emit('a message', { 
     that: 'only' 
     , '/chat': 'will get' 
    }); 
    chat.emit('a message', { 
     everyone: 'in' 
     , '/chat': 'will get' 
    }); 
    }); 

var news = io 
    .of('/news') 
    .on('connection', function (socket) { 
    socket.emit('item', { news: 'item' }); 
    }); 

從Socket.IO此代碼示例顯示了啓動服務器,然後創建兩個通道稱爲chatnews。如果我使用chat啓動服務器,但想要添加news而不中斷chat?我將如何添加頻道?

+0

你能舉個例子說明爲什麼你想用聊天工具啓動服務器,但不用新聞?我需要更好地理解您的實際使用案例。否則,Vadim是正確的,您只需調用'io.of('channel')'創建另一個通道,就不需要重新啓動。 –

+0

我將啓動Socket.IO服務器,並使用腳本添加進程的實例,每個實例綁定到創建進程時創建的通道。否則,請解釋我如何在外部(如從其他腳本)添加一個通道到預先存在的Socket.IO服務器。 – hexacyanide

+0

那麼你是否運行多個節點實例?我不確定你的意思是「用腳本添加進程的實例」。你只是想在不同的文件中設置多個頻道? –

回答

1

您不需要重新啓動服務器來添加命名空間。剛開始使用新的命名空間。在你的例子中,兩個命名空間(chatnews)在服務器啓動後創建。

+0

你的意思是說,允許用戶輸入一個新的命名空間,然後使用它? – film42

相關問題