快递服务器和socketio WITH typescript :) ==> 'app'类型中不存在'server'

时间:2016-08-18 13:07:02

标签: express typescript socket.io

我正在尝试使用socketio这个经典的expressjs服务器实现:

    this.app = express();
    this.server = http.createServer(this.app);
    this.io = socket(this.server);

但是打字稿会抛出这些错误:

src/server/ts/app.ts(23,38): error TS2345: Argument of type 'Application' is not assignable to parameter of type '(request: IncomingMessage, response: ServerResponse) => void'.
src/server/ts/app.ts(24,8): error TS2339: Property 'io' does not exist on type 'App'.
src/server/ts/app.ts(24,25): error TS2339: Property 'server' does not exist on type 'App'.

我该如何管理?处理这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

这是我的解决方法

控制器中的某处:

(req.app as any).io as io.Server

答案 1 :(得分:-1)

似乎你的另一个问题是在此之后发布的,这仍然是相关的吗?

好吧,让我们看看我做了什么工作。我已经将我的套接字分成了一个配置文件,因为我的app.js变得杂乱无章。

app.use(express.static(path.join(__dirname, '/')));

app.use(express.static(path.join(__dirname, '/node_modules/')));

  var clients = {};

var server = http.createServer(app);
var io  = require('socket.io')(server);

require('./config/app.socket.js')(io);
server.listen(8001);
io.set("origins", "*:*");

所以,我删除了中间人并将服务器直接传递给socket.io import。然后,我将对io服务器的引用传递给我的app.socket.js文件并在端口8001上侦听服务器

这是我的app.socket.js初始化

module.exports = function(io){
  var clients = {};

   var sockets;

  io.on('connection', function (socket) {
  sockets = socket;

  socket.on(//your socket function)

}