我正在尝试使用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'.
我该如何管理?处理这个问题的正确方法是什么?
答案 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)
}