socket.io не найден при вызове сервера - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь подключить socket.io на сервере Angular и Nodejs. В Angular я объявил новый сокет и подключаю его

import * as io from 'socket.io-client';
...
@component
...
const socket = io.connect('http://localhost:3000');

В серверной части: server.js

const express = require('express');
const app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.set('origins', 'http://localhost:4200');

var routes = require('./routes/routes')(io);

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "http://localhost:4200");
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT ,DELETE");
    res.header('Access-Control-Allow-Credentials', true);

    res.header(
        "Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Accept"
    );
    next();
});
io.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    console.log("connectd");
});
app.use('/', routes);
var server = app.listen(3000, function (io) {
})

Приложение компилирует и получает данные с сервера.но не работает только socket.io Я получаю эту ошибку:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=MEpN9Qy 404 (Не найдено)

1 Ответ

0 голосов
/ 31 мая 2018

socket.io подключен к http:

var http = require('http').Server(app);
var io = require('socket.io')(http);

, поэтому вы должны использовать:

http.listen(3000) 

вместо

app.listen(3000) // This will only start an express server

Ваша розеткасервер никогда не запускается, поэтому вы получаете 404, так как работает только express.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...