尝试获取 socket.io 时出现错误 404
Error 404 when trying to get socket.io
我正在编写一个使用 socket.io 为网页提供服务的节点服务器。但是当我加载页面时,控制台显示错误
(index):6 GET http://localhost:3000/socket.io/socket.io.js
不出所料,后面跟着:
(index):51 Uncaught ReferenceError: io is not defined
当我检查网络选项卡中页面加载的文件时,它显示 socket.io 的错误 404。但令人惊讶的是,当我启动其他程序时,我使用 socket.io,一切正常。唯一的区别是,对于这个,我使用 express。
这是我的代码:
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 无法提供任何服务,因为它预期的服务器从未开始侦听。
已测试!此答案已在我的本地环境中成功复制!!
我正在编写一个使用 socket.io 为网页提供服务的节点服务器。但是当我加载页面时,控制台显示错误
(index):6 GET http://localhost:3000/socket.io/socket.io.js
不出所料,后面跟着:
(index):51 Uncaught ReferenceError: io is not defined
当我检查网络选项卡中页面加载的文件时,它显示 socket.io 的错误 404。但令人惊讶的是,当我启动其他程序时,我使用 socket.io,一切正常。唯一的区别是,对于这个,我使用 express。
这是我的代码:
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 无法提供任何服务,因为它预期的服务器从未开始侦听。
已测试!此答案已在我的本地环境中成功复制!!