我正在尝试这个使用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'.
我该如何管理呢?处理这个问题的正确方法是什么?
发布于 2021-06-30 19:38:00
这是我的变通方法
控制器中的某个位置:
(req.app as any).io as io.Server
发布于 2016-09-01 03:57:46
看起来你的另一个问题是在这之后发布的,这仍然相关吗?
好的,让我们看看我做了什么工作。我已经将套接字分离到一个配置文件中,因为我的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导入。然后,我将对该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)
}
https://stackoverflow.com/questions/39019077
复制