在expresspath中使用socket.io

我想在我的一个路线上实现套接字。 我有一个文件命名

index.js

var express=require("express"); var app=express(); var http=require("http").Server(app); var io=require("socket.io")(http); // one of my route 'polling' var polling=require('./polling_server.js'); app.use('/',polling); // lots of code here http.listen(3000); 

现在我有另一个名为polling_server.js的文件,我想在其中实现套接字。

 module.exports=(function(){ var router = require('express').Router(); router.get("/polling",function() { console.log("Hello from polling"); }); // I want to access io object in this file io.on("connection",function(socket){ }); }) (); 

在上面的路线polling_server.js我想访问io对象。 当我运行这个代码,它显示了我

 io is not defined. 

您需要在polling_server.js的顶部定义io,如下所示:

 var socket = io(); 

然后使用这样的sockets:

 socket.on("connection",function(socket){