这是我参照官网上写的例子 Using with Node http server ,可是node app.js之后,用浏览器 打开http://localhost:3333,发现控制台报错。报错如下图:
//app.js
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(3333);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
<script src="/js/socket.io.js"></script>
<script>
var socket = io('http://localhost:3333');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
你得到的 socket.io.js文件不对。估计是个出错html文件。
<script src="/socket.io/socket.io.js"></script>
@leapon 这个不是路径的问题而已吗,我是把socket.io.js放在了根目录下的js文件夹下的。
@gdut-zdc 你可以用自己的socket.io.js,可是你的文件内容不对:Unexpected token <
你在浏览器里打开 /js/socket.io.js 就知道文件对不对了。
@leapon 好奇怪,像你说的,我使用你给的文件路径,是可以正常运行的。但是我这里并没有socket.io文件夹,它是怎样识别的?
@gdut-zdc 访问这个地址/socket.io/socket.io.js,socket.io会处理这个请求的
@jiangli373 是通过什么来处理的?connect模块吗?那具体是哪个中间件呢
@leapon 刚刚新建了一个程序,使用的是express和socket.io最新版 ,为什么会报错?@jiangli373 app.js index.html 浏览器报错:
@gdut-zdc index.html下面的script试着改成下面的代码 <script> $(function(){ var socket = io.connect(‘http://localhost:3000’); socket.on(‘welcome’,function(data){ console.log(data.txt); }); }) </script>
@jiangli373 这样修改还是不行.
@gdut-zdc 哦,上面看错了,你那个控制台报错是因为没有找到socket.io.js,所以导致io not defined
@jiangli373 是我的路径出了问题吗,不是说这样的路径,socket.io会自动帮我们处理,我在其它的地方这样用是没有问题的呀。
@gdut-zdc 浏览器都报错404了,io当然not defined
@karlsun 我知道报404找不到文件呀, 关键是哪里出错了?