所以我试图将我的socket.io函数分离为多个文件,但是我遇到的问题是,当我需要该类时该类不可用,或者我遇到错误“超出了最大调用堆栈大小”,因为类初始化其自己的其他类的版本,从而依次初始化同一类
示例代码 套接字服务类
WebStorm -> Preferences Build, Execution, Deployment -> Debugger -> Can accept external connections
套接字聊天类
export class SocketService {
socket = Server.socketio().sockets;
aSocket: SocketIO.Socket;
socketChatService: SocketChatService;
socketSessionService: SocketSessionService;
constructor() {
this.socket.on('connection', (aSocket: SocketIO.Socket) => {
const user = this.updateOnlineUser(aSocket);
this.aSocket = aSocket;
this.socketChatService = new SocketChatService(aSocket);
this.socketSessionService = new SocketSessionService(aSocket);
this.getFriendsListByUser(aSocket);
});
getFriendsListByUserId(aSocket){
this.socketChatService.testFunction(aSocket)
}
}
套接字会话类
export class SocketChatService(){
constructor(aSocket: SocketIO.Socket) {
this.socketSessionService = new SocketSessionService(aSocket);
this.handleAllNewChatEmits(aSocket)
}
handleAllNewChatEmits(aSocket){
//code
}
}
我假设SocketService类应该初始化其他两个类。但我似乎无法弄清楚如何从另一个类函数调用一个类函数。我以为我会在套接字服务中创建一个方法,该方法将返回聊天和会话套接字服务,但是当我这样做时,尝试调用函数时却得到了未定义的返回。
简而言之,我只想将所有套接字函数分为三个或更多类以提高可读性/可维护性,但我不知道怎么办,因为我需要所有这些中的aSocket变量来使用户连接到套接字< / p>