我有2台服务器,一台是UI服务器,另一台是kafka服务器。
我的UI服务器中的javascript文件是从csv文件中获取数据,我正在逐行读取并转换为JSON。我需要将这些逐行读取数据以JSON格式发送到我的Kafka生产者服务器。进一步的工作。服务器都有自己的专用IP地址。例如kafka服务器有192.168.2.12:9098
reportJSON是我在UI服务器js文件中获取我的csv数据的变量。
当我试图运行ui服务器的js文件时,它显示错误:
2018-05-09T15:18:56.147Z - 错误:uncaughtException:io.connect不是 功能日期= Wed May 09 2018 15:18:56 GMT + 0000(UTC)
JavaScript文件中的UI连接:
var io = require('socket.io');
var socket = io.connect("http://192.168.2.12:9098");
socket.on('connect', function () {
console.log('Connection Established');
socket.emit('csvDataFromUI', function (reportJSON) {
console.log("Data inside the csvUpload Handler is = " + reportJSON);
});
});
kafka生成器javaScript文件中的代码:
var http = require('http');
var app = express();
var host = process.env.HOST || config.host;
var port = process.env.PORT || config.port;
console.log("STARTING EVENT SERVER PRODUCER");
var server = http.createServer(app).listen(port, function () { });
server.timeout = 240000;
var io = require('socket.io').listen(server);
io.on('connection', function (socket) {
socket.on('csvDataFromUI', function(data) {
console.log("Data in kafka is = " + data);
});
//socket.emit('csvDataFromUI', payloadData);
});
/ ********************************************** *************************** / 新代码: 在此之后:https://www.npmjs.com/package/kafka
UI服务器ui.js
将其创建为制作人:
var kafka = require('kafka');
var host = '192.168.2.12';
var port = 9098;
producer = new kafka.Producer({
host: host,
port: port,
topic: 'Postings',
partition: 0
});
producer.connect(function(reportJSON) {
console.log("rportJSON = " + reportJSON);
producer.send(reportJSON);
});
Kafka服务器kafkaProducer.js:
var kafkadata = require('kafka');
console.log("STARTING PRODUCER");
var consumer = new kafkadata.Consumer({
// these are the default values
host: '192.168.2.12',
port: 9098 ,
pollInterval: 2000,
maxSize: 1048576 // 1MB
})
consumer.on('message', function(topic, message) {
console.log(message)
})
consumer.connect(function() {
consumer.subscribeTopic({name: 'Postings', partition: 0})
})
错误我在UI服务器中遇到的错误:error:uncaughtException:connect ECONNREFUSED reportJSON = undefined
在Kafka服务器中,我看不到任何接收和获取错误: ReferenceError:未定义消息
答案 0 :(得分:3)
看起来函数io.connect
不是来自npm socket.io
。它来自client side portion of socket.io。所以传统上你会使用socket.io npm来托管你的基于套接字的服务器,然后使用客户端套接字io JS lib连接并与所述服务器通信。
但是你想要服务器到服务器。根据此Stack Overflow question,最后一个答案表明,当您npm install socket.io
时,它会在node_modules
中自动托管版本。您可以执行以下操作:
var socketIoClient = require('socket.io-client');
var socket = socketIoClient.connect("http://192.168.2.12:9098");
编辑:看起来他们将client side code导出为模块,因此应该可以执行上面提到的操作。我担心客户端JS不会将服务器端转换为模块。