Angular 8 использует паруса js websokcet (sokcet.io) - PullRequest
0 голосов
/ 10 июля 2019

Я хочу подключить угловой 8 спереди к парусу js в бэкэнде через веб-сокет.но мой код не работаетможет кто-нибудь помочь по пути

в бэкэнде, я просто сделал следующее: в контроллере:

/**
 * SocketController
 *
 * @description :: Server-side actions for handling incoming requests.
 * @help        :: See https://sailsjs.com/docs/concepts/actions
 */

module.exports = {

  subscribe: function(req, res) {
    if( ! req.isSocket) {
      return res.badRequest();
    }
    console.log('here is socket');
    // sails.sockets.join(req.socket, 'feed');
    // var roomName = req.param('roomName');
    var roomName = 'feed';
    sails.sockets.join(req, roomName, (err) => {
      if (err) {
        return res.serverError(err);
      }

      return res.json({
        message: 'Subscribed to a fun room called '+roomName+'!'
      });
    });
    return res.ok();
  }
};

в модели

/**
 * Session.js
 *
 * @description :: A model definition represents a database table/collection.
 * @docs        :: https://sailsjs.com/docs/concepts/models-and-orm/models
 */

module.exports = {
  attributes: {
    sessionId: {
      unique: true,
      required: true,
      type: 'string'
    },
    date: {
      required: true,
      type: 'string',
    },
    ip: {
      required: true,
      type: 'string',
    },
    hostname: {
      required: true,
      type: 'string',
    },
    device: {
      type: 'string',
    }
  },
  afterCreate: function(entry, cb) {
    console.log('afteeeeeeeeeeeeer')
    sails.sockets.broadcast('feed', 'new_entry', entry);
    sails.sockets.join(req, roomName, (err) => {
      if (err) {
        return res.serverError(err);
      }

      return res.json({
        message: 'Subscribed to a fun room called '+roomName+'!'
      });
    });
    return res.ok();
    cb();
  }
};

и в угловом я сделал услугу:

import { Injectable } from '@angular/core';

import * as io from 'socket.io-client';
import {Observable} from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class SocketService {
  private socket: SocketIOClient.Socket;
  constructor() {
    // this.socket = io.connect('http://localhost:8000');
    // this.socket = io.connect();
    this.socket = io('http://127.0.0.1:1337');
  }

  // EMITTER
  sendMessage(msg: string) {
    console.log('message');
    this.socket.emit('sendMessage', { message: msg });
  }

  // HANDLER
  onNewMessage() {
    return Observable.create(observer => {
      console.log('sennnnnnnnnd')
      this.socket.on('newMessage', msg => {

        console.log('backkkk')
        observer.next(msg);
      });
      return () => {
        this.socket.disconnect();
      };
    });
  }
}

но когда я запускаю angular, каждую секунду выдается следующая ошибка: GET http://127.0.0.1:1337/socket.io/?EIO=3&transport=polling&t=MlQ7CIY 400 (неверный запрос)

что мне делать?

...