【发布时间】:2019-06-29 20:36:11
【问题描述】:
我目前正在尝试使用 Node.js 通过 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 放入该 arg 以便它可以正确发送。我错过了什么吗?
编辑1:
当我在发出容器变量之前登录时,如下所示:
{ callback: [Function: handler] }
【问题讨论】:
-
您是否在
socket.emit之前抛出了日志以检查容器对象是否符合您的预期? -
看编辑,这里好像没什么奇怪的
-
您客户端上的花括号看起来位置不对。
标签: json node.js socket.io docker