我在使用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
感谢。
答案 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);
随之而来的一切都会正常。
:)