我目前正在嘗試通過使用Node.js的Socket.io發送一些信息,但它看起來像我做錯了什麼,我真的不知道爲什麼。使用socket.io寫入空對象
我在我的機器上使用Docker有一些容器,我使用我的應用程序的Docker.io節點包,以獲得我想要的所有信息。
這裏的服務器端函數發送數據
io.sockets.on('connection', function(socket){
socket.emit('message',container);
});
var container = docker.containers.list(handler);
function handler(err, res) {
if (err) throw err;
console.log("data returned from Docker as JS object: ", res);
}
這裏的客戶端代碼,獲取套接字消息
var socket = io.connect('/');
socket.on('message', function(data){
console.log(data);
});
我通過套接字發送(容器中的數據列表看起來像這樣):
[ { Command: 'top ',
Created: 1393878688,
Id: 'fa46297fa16ff184673077545437a64f2adaf62db8774be696d76cc9f52b7881',
Image: 'ubuntu:12.04',
Names: [ '/cranky_archimedes' ],
Ports: [],
Status: 'Up 20 minutes' } ]
但我唯一得到客戶端是:對象{}
和socket.io日誌是給我這樣的:
debug - websocket writing 5:::{"name":"message","args":[{}]}
[ { Command: 'top ',
Created: 1393878688,
Id: 'fa46297fa16ff184673077545437a64f2adaf62db8774be696d76cc9f52b7881',
Image: 'ubuntu:12.04',
Names: [ '/cranky_archimedes' ],
Ports: [],
Status: 'Up 20 minutes' } ]
的ARGS部分是空的。我真的不知道如何將容器列表JSON放入該參數中,以便它可以被髮送。我錯過了什麼嗎?
編輯1:
當我發出我的容器變量之前記錄是這樣的:
{ callback: [Function: handler] }
您是否在'socket.emit'之前拋出了一個日誌來檢查容器對象是否您期望的? – sgress454
看到編輯,它看起來像這裏沒有什麼奇怪的 – MaximeHeckel
您的客戶端上的花括號是錯誤的地方看起來像。 –