用src='/socket.io/socket.io.js' 得到400
发布于 11 年前 作者 susantjs 11700 次浏览 最后一次编辑是 8 年前

这个问题似乎在网上被仿佛提到,但我查了包括stackoverflow上的许多帖子,还是无法排除400 求指点~~!!

用的是Express 3.3.4 + socket.io 0.9.16 Server端写为

app.js

… var app = express(); var server = require(‘http’).createServer(app).listen(app.get(‘port’)); var io = require(‘socket.io’).listen(server); app.set(‘port’, process.env.PORT || 3000); … app.get(’/find’, function (req, res){ finder.test(req, res,io); }) …

find.js

exports.test = function(req,res,io){

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log('socket.io log');
        console.log(data);
    });
});

res.render(‘page’); }

… page.jade

… script(src=’/socket.io/socket.io.js’) script. var tokens = location.href.split(’/’); var url = tokens[0]+’//’+tokens[2]; var socket = io.connect(url); socket.on(‘news’,function(data){ console.log(data);

    socket.emit('my other event',{my:'data'});
    })

得到的客户端错误。。 GET http://localhost:3000/socket.io/socket.io.js 400 (Bad Request) Uncaught ReferenceError: io is not defined

真诚求助~~~

8 回复

那个官方的例子有点问题的,其实这个,socket-io只是,socket的服务器端,你要使用它的客户端https://github.com/LearnBoost/socket.io-client,然后再引用这个里面的客户端js文件(具体看支持饿什么协议,引用相应的文件)。

@uc2dabing

用npm intall socket.io-client 了还是报错 请问还需要怎么做呢????

@susantjs,安装以后,你要自己去指定引用地址,你这个是浏览器要用的,必须是可访问的地址。

@susantjs 你现在用src=’/socket.io/socket.io.js’这个的意思是在你的express指定的public目录,下面去找sockek.io里面的这个文件,你这个文件应该不存在吧

@uc2dabing

貌似是socketio会在client request的时候,自动产生的。 只是lz这里可能没有自动产生了。 但是这些不是根本原因。 根本原因是lz没有好好的debug程序,一步步找到问题的来源啊。。 或者先google下,一般有可能有人碰到这个问题,然后解决了,会写个bolg出来。 比在论坛里问可能会快一些。。。

@lyman

偶查了好几篇blog呀~~ 可是人家指导就是怎么写的呀 还有什么特别的么????

@uc2dabing 我尝试设置过app.js的static path让socket.io.js能再运行时找出来,可是虽然可以找到js了 可依然会报 Failed to load resource: the server responded with a status of 400 (Bad Request)

回到顶部