快速服务器和套接字 WITH 打字稿 :) ==> 'server' 在类型 'App' 上不存在



我正在尝试使用socketio实现expressjs服务器:

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

但是typescript抛出了这些错误:

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'.

我该如何处理这个?

这是我的变通方法

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

看起来你的其他问题是在这之后发布的,这仍然相关吗?

好的,让我们看看我做了什么工作。我把我的套接字分离到一个配置文件中,因为我的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", "*:*");

所以,我省略了中间人,直接将服务器传递给套接字。io导入。然后,我将对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)
}

最新更新