import io from 'socket.io-client'; import BaseFunc from "../base/func"; import BaseDefine from "../base/define"; import VoipReact from "../native/voip_react"; interface IvoipItemInfo { userCode: string clientType: string userGroup: string videoToken: string roomCode: string showName: string } interface IvoipServerData { sumInfo: number data: IvoipItemInfo[] } class SocketInfo { _socket: SocketIOClient.Socket; _user: any; connect(that) { if (this._socket != undefined) { this._socket.disconnect(); } this._socket = io.connect(BaseDefine.upProjectDefine().voipServer, { transports: ['websocket'] }); //在连接成功后发送一条空消息 触发通知自己 this._socket.on('connect', function (data) { console.log('connect'); }).emit('rtc_user', ''); this._socket.on('rtc_refresh', function (data) { that.refreshDate(socketInfo.upListServer(data)); }); } emitMessage(sType, sMessage) { this._socket.emit(sType, sMessage); } upListInfo(sData): IvoipItemInfo[] { let aReturn: IvoipItemInfo[] = []; if (!BaseFunc.stringIsEmpty(sData)) { let oData = JSON.parse(sData); for (var p in oData) { aReturn.push(oData[p]); } } return aReturn; } upListServer(sData): IvoipServerData { let oReturn: IvoipServerData = { sumInfo: 0, data: [] }; this.upListInfo(sData).forEach(fItem => { if (fItem.clientType.startsWith('voipserver')) { oReturn.data.push(fItem); oReturn.sumInfo++; } }) return oReturn; } inUserInfo(oUserInfo) { this._user = oUserInfo; } upUserInfo() { return this._user; } } const socketInfo = new SocketInfo(); let flatConnect = false; export default class { static initClient(that, oUserInfo) { if (!flatConnect) { VoipReact.initVoip(); VoipReact.connectServer(oUserInfo.videoToken, (error, events) => { }); socketInfo.inUserInfo(oUserInfo); flatConnect = true; } socketInfo.connect(that); } static startServer() { var oUser = { userCode: socketInfo.upUserInfo().loginName, memberCode: '', clientType: 'voipserverApp', roomCode: '', userGroup: '', }; socketInfo.emitMessage('rtc_user', JSON.stringify(oUser)); } static stopServer() { var oUser = { userCode: socketInfo.upUserInfo().loginName, memberCode: '', clientType: 'stopvoipserverApp', roomCode: '', userGroup: '', }; socketInfo.emitMessage('rtc_user', JSON.stringify(oUser)); } static startCall(sUserId: string) { var oUser = { userCode: socketInfo.upUserInfo().loginName, memberCode: '', clientType: 'voipclient', roomCode: '', userGroup: '', }; socketInfo.emitMessage('rtc_user', JSON.stringify(oUser)); VoipReact.startCall(sUserId); } }