Как использовать SocketIO с другим роутером - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю NodeJS Express Project с экспресс-генератором.И я хочу использовать SocketIO, но кажется, что с настройками произошла ошибка.

const express = require('express');
const router = express.Router();
var http = require('http').Server(router);
var io = require('socket.io')(http);

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);
  });
});

[Клиентский файл PUG] Я установил SocketIO с NPM, и в документе сказано, что я могу использовать

<script src="/socket.io/socket.io.js"></script>

Нокогда я использую это, кажется, что не работает, поэтому я просто использую CDN-версию socketIO на стороне клиента.

script(src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js")

и это мой код JS на стороне клиента

$(function () {
    var socket = io();
    $('form').submit(function(e){
      e.preventDefault(); // prevents page reloading
      socket.emit('chat message', $('#m').val());
      $('#m').val('');
      return false;
    });
  });

И я получилнекоторые сообщения об ошибках из консоли сервера и консоли клиента

[Ошибка на стороне сервера]

Server Side Error

[Ошибка на стороне клиента]

Client Side Error

Я думаю, что это проблема со стороны серверного кода с исходным кодом с маршрутизатором что-то.потому что все примеры кода похожи на это

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

1 Ответ

0 голосов
/ 17 февраля 2019

Вы правы, попробуйте мой пример

var app = require('express')();
const router = express.Router();
app.use('/', router); // attach the router to express app
var http = require('http').Server(app);
var io = require('socket.io')(http);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...