我在学习代码的过程中,在服务端跟index.js客户端进行socket通信方面遇到了问题,希望能够得到您的解答,问题就是没有理解为什么InitApp/index.js中的InitApp类中的init()函数会被默认执行,具体疑惑如下:
在客户端的src/conpontent/PrivateChat/index.js中,在一个用户想要给另外一个用户发送信息时(例如A用户想要给B用户发送信息),A用户会通过src/conpontent/PrivateChat/index.js的51行的request.socketEmitAndGetResponse('sendPrivateMsg',data),先将要发送的信息以及B用户的信息发送到服务端,然后这个请求被服务端中server/src/app/socket/app.socket.ts接收(app.socket.ts的89行),服务端通过io.to(e).emit('getPrivateMsg', data);来将信息转发给B用户。
在客户B的客户端中,接受服务端的socket的部分是客户端代码中的src/app/modules/InitApp/index.js的第65行,然后再通过Action和Reducer来更新客户端的网页信息。
但是我疑惑的是为什么服务端能够直接和客户端B进行通信,因为我并没有发现InitApp/index.js这个文件被其他程序调用过。通过学习知道,InitApp中的socket部分都是为了跟服务端进行socket通信。也就是为什么InitApp/index.js这个文件会被默认执行。
通过执行demo时候打印log,我发现只要成功登录进入主页面中,InitApp/index.js的构造函数就会被执行,这是否是一个什么机制,能够自动调用或者初始化这个InitApp对象?
希望能够得到您的回答,谢谢!