开发者社区> 问答> 正文

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

网上大部分例子都是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~



展开
收起
爱吃鱼的程序员 2020-06-20 17:20:29 398 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    是不是帖子沉太快。。还是分类没分好。貌似没人回答额。。

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

    <preclass="brush:js;toolbar:true;auto-links:false;">varexpress=require('express');varapp=express();varhttp=require('http').Server(app);vario=require('socket.io')(http);varpath=require('path');varroutes=require('./routes');app.configure(function(){app.set('port',process.env.PORT||3001);app.set('views',__dirname+'/views');app.set('viewengine','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('listeningon*:3000');});





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

    2020-06-20 17:20:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载