Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在两台服务器之间创建套接字io连接_Javascript_Node.js_Socket.io_Apache Kafka_Kafka Producer Api - Fatal编程技术网

Javascript 如何在两台服务器之间创建套接字io连接

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

我有两台服务器,一台是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连接:

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
不是来自npm
socket.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
中看到它们的方向: