如何在其他路由器上使用SocketIO

时间:2019-02-17 05:22:40

标签: javascript node.js express socket.io

我用Express Generator创建NodeJS Express项目。而且我想使用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文件] 我用NPM安装了SocketIO,文档说我可以使用

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

但是当我使用它似乎无法正常工作时,我只在客户端使用了socketIO的CDN版本。

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 :(得分:0)

您是对的,请尝试我的示例

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);