带有 socket.io 和 express 的 Websocket
Posted
技术标签:
【中文标题】带有 socket.io 和 express 的 Websocket【英文标题】:Websocket with socket.io and express 【发布时间】:2016-10-20 21:16:06 【问题描述】:我正在尝试将 socket.io 与 express 一起使用,我使用了 express 生成器。我无法从控制台查看任何日志。
在写这篇文章之前,我关注了 Gabriel 投票最多的解决方案 奥特洛克 Using socket.io in Express 4 and express-generator's /bin/www
我的代码:
app.js
var express = require('express');
var socket = require('socket.io');
var app = express();
var io = socket();
app.io = io;
// var for routes
var index = require('./routes/index')(io);
// Routes
app.use('/', index);
module.exports = app;
bin/www
var server = http.createServer(app);
var io = app.io;
io.attach(server);
routes/index.js
var passport = require('passport');
/* GET home page. */
module.exports = function(io)
var app = require('express');
var router = app.Router();
var controller = require('../controllers/indexController');
router.get('/', controller.plain);
/*socket*/
io.on('connection', function(socket)
console.log('conectado desde index.js');
console.log('conectado desde index.js');
console.log('conectado desde index.js');
);
return router;
controllers/indexController.js
使用 indexController.js 中的完整内容进行编辑
var Account = require('../models/accounts');
var Fav = require('../models/favs');
var Project = require('../models/projects');
var Message = require('../models/messages');
var mongoose = require('mongoose');
module.exports =
plain : function (req, res)
Project.find(function(err, projects)
Account.find(function(err, userOwner)
if(req.user)
Fav.find('favUserId': req.user.id,function(err, favs)
res.render('index',
title: "myAplication",
user: req.user,
listProjects : projects,
listUsers : userOwner,
listFavs : favs
);
);
else
res.render('index',
title: "myAplication",
listProjects : projects,
listUsers : userOwner,
);
);
);
,
;
【问题讨论】:
socket.on('connection' ... event never fired nodejs + express + socket.io的可能重复 不一样,查看链接中的代码,我尝试了一些解决方案,但也不起作用。 您是否尝试将事件重命名为io.on('connect', ...
?
是的,没有任何反应。
如何启动您的应用程序? node app.js
?
【参考方案1】:
你可以这样做:
//in app.js
app.set('socketio', io);
//in any route
app.get("/", (req, res) =>
const io = req.app.get('socketio');
)
【讨论】:
以上是关于带有 socket.io 和 express 的 Websocket的主要内容,如果未能解决你的问题,请参考以下文章
无法从带有 Socket.IO 的 cookie 中获取 Express 会话 ID