文檔說socket.io不支持。獲得.SET現在如何存儲客戶相關的數據在socket.io 1.0
是否還好商店客戶端像
io.sockets.on('connection', function (client) {
client.on('data', function (somedata) {
client['data'] = somedata;
});
});
在
相關數據我需要多個節點嗎?
文檔說socket.io不支持。獲得.SET現在如何存儲客戶相關的數據在socket.io 1.0
是否還好商店客戶端像
io.sockets.on('connection', function (client) {
client.on('data', function (somedata) {
client['data'] = somedata;
});
});
在
相關數據我需要多個節點嗎?
是的,可以將屬性添加到socket.io socket
對象。你應該小心不要使用可能與內置屬性或方法衝突的名稱(我建議添加一個前導下劃線或用某種名稱前綴來命名它們)。但是套接字只是一個Javascript對象,只要不與現有屬性發生衝突,您就可以自由地向其添加屬性。
還有其他方法可以將socket.id
用作您自己數據結構的關鍵。
var currentConnections = {};
io.sockets.on('connection', function (client) {
currentConnections[client.id] = {socket: client};
client.on('data', function (somedata) {
currentConnections[client.id].data = someData;
});
client.on('disconnect', function() {
delete currentConnections[client.id];
});
});
此信息可供客戶查看/ mutate? –
@Alex_Nabu - 編號像「curentConnections」對象中的數據是服務器端數據,並且是服務器專用的數據。 – jfriend00
對不起,意思是如果我將數據附加到套接字obj,如果它的客戶端可變。現在,我看到你做了什麼。我有一個尷尬的時刻 –
是的,這是可能的,只要沒有其他內建屬性具有相同的名稱。
io.sockets.on('connection', function (client) {
client.on('data', function (somedata) {
// if not client['data'] you might need to have a check here like this
client['data'] = somedata;
});
});
我建議另一種方式,但與ECMAScript的6 weak maps
var wm = new WeakMap();
io.sockets.on('connection', function (client) {
client.on('data', function (somedata) {
wm.set(client, somedata);
// if you want to get the data
// wm.get(client);
});
client.on('disconnect', function() {
wm.delete(client);
});
});
什麼是變量'client'?你錯過了一大堆的背景,任何人都可以回答。 – jfriend00
@ jfriend00已更新 – Herokiller