为什么socket.io错误500与express.io?

时间:2013-04-28 23:33:57

标签: socket.io

为什么socket.io现在使用express.io ??

给出500(内部服务器错误)

客户方:

$(document).ready(function(){
    $.getScript("http://www.mysite.com:8000/socket.io/socket.io.js",function(){
        var socket = io.connect('http://www.mysite.com:8000'); //<<--error
        socket.emit('ready'); 
        });});

服务器端:

var express = require('express.io')
  , engine = express().http().io();

engine.use(express.cookieParser());
engine.use(express.session({secret:'monkey'}));
engine.all('/',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","X-Requested-With");next();});
engine.get('/', function(req, res) {
    req.session.loginDate = new Date().toString()
    res.sendfile(__dirname)
    });


engine.listen(8000);


engine.io.route('ready',function(socket){console.log('hellooooooooooo');});

我正在关注https://github.com/techpines/express.io上的文档,我只更改了两件事:跨域和应用程序被称为引擎。我只是看不出问题有没有其他人让这个工作?

注意:它不使用express.js它使用express.io(与socket.io更兼容)

这就像socket.io不是他们在服务器上监听的,即使是engine = express()。http()。io(); io是socket.io

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,但我通过复制和粘贴express.io示例代码中的代码示例来修复它,并且它有效。然后我比较它们以检查问题可能是什么,并观察到代码的顺序很重要。

此订单导致错误:

  
      
  • 静态
  •   
  • cookieParser
  •   
  • 会话
  •   

但是当我按照示例代码中提供的代码时,我发现这个命令有效:

  
      
  • cookieParser
  •   
  • 会话
  •   
  • 静态
  •   

希望这对你也有所帮助。

答案 1 :(得分:0)

我认为发布的示例失败了,因为您在没有提供文件名的情况下使用了呼叫res.sendfile(__dirname)

这是来自express.io,请注意它使用res.sendfile(__dirname + '/client.html')

express = require('express.io')
app = express().http().io()

// Setup your sessions, just like normal.
app.use(express.cookieParser())
app.use(express.session({secret: 'monkey'}))

// Session is automatically setup on initial request.
app.get('/', function(req, res) {
    req.session.loginDate = new Date().toString()
    res.sendfile(__dirname + '/client.html')
})