node.js socket.io无法使用express

时间:2015-01-28 06:19:08

标签: node.js express socket.io

我在使用express实现与node.js和socket.io的简单聊天应用时遇到了一些问题。

这是我的index.js文件:

var express = require('express');
var http = require('http').Server(express);
var router = express.Router();
var io = require('socket.io')(http);

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});

module.exports = router;

这确实给了我这个错误:

listening on *:3000
Port 3000 is already in use

npm ERR! cc@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
...

我已经检查了" $ netstat -anp 2> / dev / null | grep:3000"并且端口上似乎没有任何东西在运行。

其次,如果我更改端口号,我在控制台中得到这个,我无法看到有套接字连接或对它做任何事情:

listening on *:3010
GET /socket.io/?EIO=3&transport=polling&t=1422425200435-185 404 319.307 ms - 1136
GET /socket.io/?EIO=3&transport=polling&t=1422425205774-186 404 40.407 ms - 1136
GET /socket.io/?EIO=3&transport=polling&t=1422425210821-187 404 19.056 ms - 1136

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道你是否使用快速发电机,但我会假设你这样做。

要使用相同的端口,您必须创建一个新文件(我命名为io.js)

var io = require('socket.io')();

io.on('connection', function (socket) {
  console.log("connected");
  socket.emit('news', { hello: 'world' });
});

module.exports = io;

现在在./bin/www中你必须添加以下几行:

// After var app.
var io = require('../io');

...

// After server.on('listening', onListening); add:
io.attach(server);

随之而来的一切都会正常。

:)