尝试获取socket.io时出现错误404

我正在编写一个节点服务器,它使用socket.io提供一个网页。 但是当我加载页面时,控制台显示错误

(index):6 GET http:// localhost:3000 / socket.io / socket.io.js

这并不令人惊讶,其次是:

(索引):51 Uncaught ReferenceError:io未定义

当我检查networking选项卡中页面加载的文件时,它显示了socket.io的错误404。 但令人惊讶的是,当我启动其他程序,我使用socket.io,一切正常。 唯一的区别就是对于这个,我用快递。

这是我的代码:

app.js:

var express = require('express'); var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); app.use(express.static("./app")); app.get("/", function(req, res, next) { res.sendFile(__dirname + "/index.html") }); app.listen(3000); console.log("Server started in http://localhost:" + 3000); io.on('connection', function(socket){ socket.emit('news', {hello :'world'}); socket.on('my other event', function(data){ console.log(data); }); }); 

index.html:

 <!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script src="/socket.io/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> </head> <body> [Some unrelated text] <script> var socket = io.connect('http://localhost'); socket.on('news', function(data){ console.log(data); socket.emit('my other event', {my: 'data'}); }); </script> </body> </html> 

谢谢你的帮助 !

更改

 app.listen(3000); 

 server.listen(3000); 

您的socket.io连接到http服务器server 。 请参阅: var io = require('socket.io')(server); 而不是快递服务器app

所以显然socket.io不能提供任何服务,因为它所期望的服务器从未开始收听。

检测过! 这个答案在我的当地环境中成功复制!