公平警告,我是javascript和ool的新手。我试图整理一个简单的脚本来解析数据到Web套接字。该脚本应该能够处理无限数量的有效负载。
此代码有效,但一次只能处理有效负载:
#!/usr/bin/env node
var io = require('socket.io-client');
var i=1
socket = io.connect('http://10.0.9.1:80');
var data = JSON.parse(process.argv[2]);
socket.on('connect', function(){
console.log('Emitting');
socket.emit('widget', data);
process.exit(0);
});
使用逻辑测试将代码包装在一个循环中会破坏它。没有语法错误,但它似乎没有调用emit方法。
#!/usr/bin/env node
var io = require('socket.io-client');
var i=1
var data
while (true) {
i++
if ( process.argv[i] ) {
socket = io.connect('http://10.0.9.1:80');
data = JSON.parse(process.argv[2]);
socket.on('connect', function(){
console.log('Emitting');
socket.emit('widget', data);
});
} else {
process.exit(0);
};
};
答案 0 :(得分:1)
您正在创建的套接字是异步的,因此您最终会创建一堆套接字,然后在建立连接之前调用process.exit(0)
答案 1 :(得分:0)
我的第一次尝试有很多错误。来自ControlAltDel和mrid的线索让我意识到我的循环结构都是错误的。循环应该放在on(' connect')中,如下所示:
#!/usr/bin/env node
var io = require('socket.io-client');
var i=1
var data
socket = io.connect('http://10.0.9.1:80');
socket.on('connect', function(){
while (true) {
i++;
if ( process.argv[i] ) {
data = JSON.parse(process.argv[i]);
console.log('Emitting ');
socket.emit('widget', data);
} else {
process.exit(0);
};
}
});