使用express和socket.io的节点js - 找不到socket.io.js

时间:2016-06-28 20:43:49

标签: node.js express socket.io

我正在使用socket.io处理节点js应用程序。我看了一些关于SO的答案,但他们无法解决我的问题。我得到的错误是

Failed to load resource: the server responded with a status of 404 (Not Found)
localhost/:10 Uncaught ReferenceError: io is not defined

这是我的目录结构:

Judgement
|----node_modules
|----|----express
|----|----socket.io
|----public
|----|----css
|----|----|----judgementMain.css
|----|----js
|----|----|----form.js
|----|----index.html
|----server.js
|----package.json

在我的index.html页面中 我有socket.io.js的以下链接

  <script type="text/javascript" src="socket.io/socket.io.js"></script>
  <script type="text/javascript">
      var socket = io();
  </script>

  <script type="text/javascript" src="js/form.js"></script>

server.js的内容如下

var express = require('express');
var app = express();
var path = require('path');

// Define the port to run on
app.set('port', 3000);
app.use(express.static(path.join(__dirname, 'public')));

// Listen for requests
var server = app.listen(app.get('port'), function() {
    var port = server.address().port;
    console.log('Magic happens on port ' + port);
});

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

io.on('connection', function (socket) {
    console.log('A user connected');
    socket.on('disconnect', function() {
        console.log('A user disconnected');
    });
});

有人可以解释我做错了什么吗?我刚开始使用node js和express以及socket.io,所以任何帮助都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:0)

我看到了几个问题:

首先,在您的HTML中,它应该是带有前导斜杠的src="/socket.io/socket.io.js"

其次,您创建了两个http服务器,但实际上只启动其中一个,当您只使用一个时。你的socket.io东西不起作用,因为你给它一个你从未开始的http服务器。

更改为您为socket.io提供表达正在使用且已在所需端口上启动的http服务器:

var express = require('express');
var app = express();
var path = require('path');

// Define the port to run on
app.set('port', 3000);
app.use(express.static(path.join(__dirname, 'public')));

// Listen for requests
var server = app.listen(app.get('port'), function() {
    var port = server.address().port;
    console.log('Magic happens on port ' + port);
});

var io = require('socket.io')(server);

io.on('connection', function (socket) {
    console.log('A user connected');
    socket.on('disconnect', function() {
        console.log('A user disconnected');
    });
});