import IMClient from 'react-native-im-client' import {chatServer,chatPort} from '../network/API' import {GlobalUserStorageTool, UserStorageKey} from "./GlobalUserStorageTool"; export default class Client { constructor(){} static sid = ''; static async getToken(){ return new Promise((resolve,reject)=> { GlobalUserStorageTool.load(UserStorageKey.UserInfo, (res) => { console.log('get token:::',res.token) resolve(res.token) }, (err) => { reject(err) console.warn(err) }) }) } static async clientRequest(payload){ return new Promise(resolve => { IMClient.asyncSend(payload).then(res=>{ console.log("send response:",res) resolve(res) }).catch(err=>{ console.warn(err) }) }) } static async connect (){ return new Promise((resolve,reject)=>{IMClient.connect(chatServer,chatPort).then(res=>{ resolve(res) }).catch(err=>{ console.warn(err) reject (err) })}) } static async setSession () { const payload = { operator: '/v1/session/start', params: JSON.stringify( { "device": "pc",// 客户端设备信息:pc、pad、mobile、web等 "os": "linux", // 客户端运行的操作系统 "os_version": "3.6", // 操作系统版本 "app": "go-client", // 客户端运行的app "app_version": "1.0", // // 客户端运行的app版本 "tag": {} // 用于发送自定义标记 } ) } const res = await this.clientRequest(payload); const sessionId = res && res.params && res.params.value; GlobalUserStorageTool.save('sid',sessionId) let token = global.token?global.token:await this.getToken() const bindSessionPayload = { operator: '/v1/session/bind/uid/by/token', params: JSON.stringify( { "token": token, }) } IMClient.setRequestProperty('sid',sessionId) // return new Promise((resolve, reject) => { // console.log(sessionId) this.clientRequest(bindSessionPayload) return sessionId // }) } }