用socket.io node.js和angular 6发出问题

时间:2019-03-28 14:48:55

标签: websocket socket.io

我在使用io.emit时遇到麻烦。我想一个接一个地发送乘法数据,但它只发送第一个数据,而其他的则在程序完成时发送。您知道为什么会发生这种情况吗?这是我的服务器和客户端代码的一部分。

服务器端

var express = require('express');
var http = require('http');
var app = express();
var fs = require('fs');
var path = require('path');
const server = http.Server(app);
const socketIo = require('socket.io');
var io = socketIo(server, { transports: [ 'websocket']});


  io.on('connection', (socket) => {

  console.log('New connection', socket.handshake.query.username);
    console.log('id', socket.id)
    socket.on('error', function (result){
      console.log(result);
    });
  });
        try {

          for (var j = 0, i = 0; (i < Numri_kuponave); j++ , i++) {

            if (j === global.filename.length) {
              j = 0;
            }

            var time = parseInt(Interval);
            var ms = (time * 1000);

            fs.copyFileSync(src + global.filename[j], destDir + Emri_kuponit + '.txt');
            console.log('j', j)
            console.log('test file', global.filename[j]);

            wait(ms);




            var content = fs.readFileSync(destErr + Emri_errorit + '.txt', 'utf8');


            console.log('para file err', content)
            var output = {};


            if (content.length > 0 && Config == 1) {

              output.filename = global.filename[j];
              output.content = content;
              response.push(output);
              **io.emit('prove', { output });**
              break;

            } else if (content.length > 0 && Config == 0) {
              output.filename = global.filename[j];
              output.content = content;
              response.push(output);

              console.log('output', output)
              **io.emit('prove', { output });**
            }
          }

          if (response.length === 0) {
            return res.json({
              StatusCode: '0',
              StatusMessage: 'OK',
              StatusDescription: response
            });
          } else {
            **io.emit('prove', {response});**
            return res.end();

客户端

let socket = socketIo('http://192.168.0.129:4200/',  { transports: ['websocket'] });
socket.on('prove', (data) => {
  console.log('onInit', data);
});

所以这是我需要帮助的部分(粗体显示)。我需要将所有关于内容的错误一一发送给客户端,但是这段代码最终将第一个错误和所有其他错误发送给该数组。希望您能为我提供帮助。

0 个答案:

没有答案