[nodejs][express] 配置express4.x 与 socket.io
今天在我的代码中将socket.io 放到express中一起使用,
找了半天,找到了以下代码,
很简单,
在app.ts中进行 socket.io初始化
然后在bin/www中进行attach
最后在routes中进行插入使用.
这样就可以在controller中进行websocket发送了.
app.js
var express = require( "express" ); var socket_io = require( "socket.io" ); // Express var app = express(); // Socket.io var io = socket_io(); app.io = io; (...) // socket.io events io.on( "connection", function( socket ) { console.log( "A user connected" ); }); module.exports = app; // Or a shorter version of previous lines: // // var app = require( "express" )(); // var io = app.io = require( "socket.io" )(); // io.on( "connection", function( socket ) { // console.log( "A user connected" ); // }); // module.exports = app;
bin/www:
(...) /** * Create HTTP server. */ var server = http.createServer( app ); /** * Socket.io */ var io = app.io io.attach( server ); (...)
/routes/router
import * as express from 'express'; import Control from '../controller/users/control'; module.exports = function (io) { //now you can use io.emit() in this file var router: express.Router = express.Router(); /* GET home page. */ router.get('/', Control.goHome); router.get('/battle', Control.goBattle); router.post('/dream', function(req,res,next){ req.body.io = io; Control.dream(req,res,next); }); return router; }