我正在尝试使用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)
}