Javascript 如何在两台服务器之间创建套接字io连接
我有两台服务器,一台是UI服务器,另一台是kafka服务器 我的UI服务器中的javascript文件从csv文件中获取数据,我逐行读取该文件并将其转换为JSON。我需要将这些JSON格式的逐行读取数据发送到我的Kafka producer服务器。为了进一步的工作。两台服务器都有自己的专用IP地址。e、 g.卡夫卡服务器有192.168.2.12:9098 reportJSON是在UI服务器js文件中获取csv数据的变量 当我尝试运行ui服务器的js文件时,它显示错误: 2018-05-09T15:18:56.147Z-错误:未捕获异常:io.connect未连接 活动日期=2018年5月9日星期三15:18:56 GMT+0000(UTC) JavaScript文件内的UI连接:Javascript 如何在两台服务器之间创建套接字io连接,javascript,node.js,socket.io,apache-kafka,kafka-producer-api,Javascript,Node.js,Socket.io,Apache Kafka,Kafka Producer Api,我有两台服务器,一台是UI服务器,另一台是kafka服务器 我的UI服务器中的javascript文件从csv文件中获取数据,我逐行读取该文件并将其转换为JSON。我需要将这些JSON格式的逐行读取数据发送到我的Kafka producer服务器。为了进一步的工作。两台服务器都有自己的专用IP地址。e、 g.卡夫卡服务器有192.168.2.12:9098 reportJSON是在UI服务器js文件中获取csv数据的变量 当我尝试运行ui服务器的js文件时,它显示错误: 2018-05-09T1
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);
});
});
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);
});
kafka producer javaScript文件中的代码:
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);
});
});
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);
});
/*************************************************************************/
新代码:
在此之后:
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服务器中遇到的错误是:错误:uncaughtException:connect
EconRefused reportJSON=未定义
在Kafka服务器中,我看不到任何接收和获取错误:
ReferenceError:未定义消息
看起来函数
io.connect
不是来自npmsocket.io
。它来自中国。因此,传统上,您将使用socket.io npm托管基于socket的服务器,然后使用客户端socket io JS lib与所述服务器进行连接和通信
但是你想做的是服务器对服务器。根据这一点,最后一个答案表明,当您npm安装socket.io
时,它将在您的node\u模块中自动承载一个版本。您可能可以执行以下操作:
var socketIoClient = require('socket.io-client');
var socket = socketIoClient.connect("http://192.168.2.12:9098");
编辑:看起来确实像是将导出为一个模块,因此应该可以执行我上面提到的操作。我担心客户端JS无法作为模块转换到服务器端。谢谢您的帮助。但对我来说,它是这样工作的:var socketIoClient=require('socket.io client');嘿,你能告诉我服务器部分是否正确吗?因为我只给出了端口号,没有提到ip地址。@ShalabhNegi是Kafka服务器还是你的客户端服务器?你现在有什么问题?这是我过去做过的一个示例,socket io和express在同一台服务器上运行。这应该仍然有效。@
只是模块别名。您可以在package.json
中看到它们的方向: