首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Socket.io模块导出为全局可用。

将Socket.io模块导出为全局可用。
EN

Stack Overflow用户
提问于 2017-02-15 06:45:56
回答 1查看 1.4K关注 0票数 0

好了,我有一些要求,我希望能够在我的服务器中使用Socket.IO anywhere,特别是在执行任何CRUD操作时发送事件的路由中。

下面是一个名为sockets.js的文件,我用它来初始化我的套接字。

代码语言:javascript
复制
(function IIFE() {
  2   'use strict';
  3
  4   var socketIO = require('socket.io');
  5
  6   exports.initialize = function (server) {
  7     var io = socketIO.listen(server)
  8
  9     io.sockets.on('connection', (socket) => {
 10       console.log(socket)
 11       console.log("Connected");
 12
 13       io.sockets.on('disconnect', (socket) => {
 14         console.log('Disconnect')
 15       });
 16     });
 17   }
 18
 19 })();

下面是我的app.js,它实际上就是我的服务器。

代码语言:javascript
复制
    2 (function IIFE() {
    3   'use strict';
    4
    5   const chalk = require('chalk');
    6
    7   if(!process.env.NODE_ENV) {
    8     console.log(chalk.red('No environment specified...') + chalk.blue('defaulting to \'development\''));
    9     process.env.NODE_ENV = 'development';
   10   }
   11
   12   const express = require('express');
   13   const mongoose = require('mongoose');
   14
   15   const config = require('./config/environment');
   16
   17   mongoose.connect(config.mongo.uri, config.mongo.options);
   18
   19   mongoose.connection.on('error', function(err) {
   20     console.error('Mongo Error: ' + err);
   21   });
   22
   23   const app = express();
   24   const server = require('http').createServer(app);
   25
+  26   var io = require('./sockets.js');
+  27   io.initialize(server);
+  28
   29   require('./config/express')(app);
   30   require('./routes')(app);
   31
   32   server.listen(config.port, config.ip, function() {
   33     console.log('order-api listening on %d in %s mode', config.port, app.get('env'));
   34   });
   35
   36   exports = module.exports = app;
   37 })();

以下文件位于另一个名为api的文件夹中。整个应用程序就是我试图将套接字集成到其中的功能应用程序。然而,我似乎无法理解如何从我的sockets.js集成套接字,并在下面的路由处理程序中使用它们。

代码语言:javascript
复制
(function IIFE() {
  2   'use strict';
  3
  4   const router = require('express').Router();
  5
  6   router.use('/carts', require('./cart'));
  7   router.use('/orders', require('./order'));
  8   router.use('/reports', require('./report'));
  9   router.use('/validators', require('./validator'));
 10
 11   module.exports = router;
 12 })();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 13:22:04

您可以在global对象中声明变量io,以便它在任何地方都可见。

global.io = socketIO.listen(server)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42237632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档