express4.0+socket.io整合的问题。

黄开源中国 发布于 2014/06/05 18:38
阅读 3K+
收藏 0

网上大部分例子都是express3.0.新版的api貌似差别蛮大,我装的4.0用网上的例子基本不能跑。就只能结合官网的例子,在这基础上修改。。

以下是部分代码

app.js

var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var ejs = require('ejs');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
    socket.broadcast.emit('message','kan  your hole family');
});



bin/www中
#!/usr/bin/env node
var debug = require('debug')('webchat');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});



修改完以后。能够正常访问,可以确定的是页面上的那段代码是没问题的。启动没报错。错是fail to load resource:localhost:3000/socket.io/socket.io.js。我猜是socket.io模块没监听到同一个3000端口上。。具体也不是很清楚怎么去描述。

另外想了解下,express4.0用express生成的项目架构。。为什么启动用npm start是读的bin/www这个文件。。而大部分网上的demo项目都是直接通过node xxx.js启动。。。


最后。求点express4.0的教程。。api看了下。东西太多。不好抓重点。。最好是完整4.0项目。。THX~



加载中
0
黄开源中国
黄开源中国
是不是帖子沉太快。。还是分类没分好。貌似没人回答额。。
0
未央
未央

我的代码是这样写的。socket.io和express 3的,不过我想express 4也不是问题。

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var path = require('path');
var routes = require('./routes');

app.configure(function(){
  app.set('port', process.env.PORT || 3001);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('iswear'));
  app.use(express.session());
  app.use(express.static(path.join(__dirname, 'public')));
  
  routes(app, io);
});

http.listen(3001, function(){
  console.log('listening on * : 3000');
});





黄开源中国
黄开源中国
express3的例子我也找了几个。。跟你这个差不多。。也能跑。现在我已经降回去3了。。4的例子实在太少。。还是熟悉了API在考虑升级
返回顶部
顶部