首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有typescript的express服务器和套接字:) ==> ' server‘在类型'App’上不存在

带有typescript的express服务器和套接字:) ==> ' server‘在类型'App’上不存在
EN

Stack Overflow用户
提问于 2016-08-18 21:07:02
回答 2查看 1.1K关注 0票数 0

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

代码语言:javascript
代码运行次数:0
运行
复制
    this.app = express();
    this.server = http.createServer(this.app);
    this.io = socket(this.server);

但是typescript抛出了这些错误:

代码语言:javascript
代码运行次数:0
运行
复制
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'.

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

EN

回答 2

Stack Overflow用户

发布于 2021-07-01 03:38:00

这是我的变通方法

控制器中的某个位置:

代码语言:javascript
代码运行次数:0
运行
复制
(req.app as any).io as io.Server
票数 1
EN

Stack Overflow用户

发布于 2016-09-01 11:57:46

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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导入。然后,我将对该io服务器的引用传递给我的app.socket.js文件,并在端口8001上监听该服务器

下面是我的app.socket.js初始化

代码语言:javascript
代码运行次数:0
运行
复制
module.exports = function(io){
  var clients = {};

   var sockets;

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

  socket.on(//your socket function)

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

https://stackoverflow.com/questions/39019077

复制
相关文章

相似问题

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