我是Node.js和Express的noob :(我有一個訪問其他模塊中的socket.io對象的問題我創建了一個全局變量來但是隻要用戶關閉連接,連接不再可用,技術上我猜連接仍然存在,但是我因爲資源原因將其刪除。Node.js - Socket.io - Express 3
注意以下每次連接都建立該套接字分配給全局變量這是所有其他模塊訪問。
// App.js
var io = require('socket.io').listen(server);
var sessionsConnections = {};
io.sockets.on('connection', function (socket)
{
global.socket = socket;
sessionsConnections[socket.id] = socket;
.....
}
socket.on("disconnect", function()
{
delete sessionsConnections[socket.id];
});
// Match.js
global.socket.emit('lobby:createMatch', data);
如果最後分配給全局的連接關閉Match.js將被擰緊。此時,Match.js是唯一需要socket.io引用的模塊。 Match.js有一堆用於處理事件的輸出,發佈更改並呈現視圖。
是否有任何建議如何處理?爲了成爲全局引用,是否可以實例化一個初始的套接字連接來存在於App.js中?
您是否正在嘗試僅處理一個連接? 你在發射之前測試global.socket的值嗎? 你得到的錯誤是什麼? –
用戶始終創建並連接到匹配項。事情是這個設計的作品,但它並不完全證明。當我測試並連接套接字時,將其分配給全局,斷開連接並終止套接字,然後嘗試發出它掛起的global.socket,最後我得到一個錯誤,說找不到套接字或其他東西。 –
好吧,我認爲你沒有得到這樣的事實:'socket'不是唯一的,而是每個用戶都不相同。 lortabac的答案將幫助你;) –