Ei kuvausta

ChatUtils.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import IMClient from 'react-native-im-client'
  2. import {chatServer,chatPort} from '../network/API'
  3. import {GlobalUserStorageTool, UserStorageKey} from "./GlobalUserStorageTool";
  4. export default class Client {
  5. constructor(){}
  6. static sid = '';
  7. static async getToken(){
  8. return new Promise((resolve,reject)=> {
  9. GlobalUserStorageTool.load(UserStorageKey.UserInfo, (res) => {
  10. console.log('get token:::',res.token)
  11. resolve(res.token)
  12. }, (err) => {
  13. reject(err)
  14. console.warn(err)
  15. })
  16. })
  17. }
  18. static async clientRequest(payload){
  19. return new Promise(resolve => {
  20. IMClient.asyncSend(payload).then(res=>{
  21. console.log("send response:",res)
  22. resolve(res)
  23. }).catch(err=>{
  24. console.warn(err)
  25. })
  26. })
  27. }
  28. static async connect (){
  29. return new Promise((resolve,reject)=>{IMClient.connect(chatServer,chatPort).then(res=>{
  30. resolve(res)
  31. }).catch(err=>{
  32. console.warn(err)
  33. reject (err)
  34. })})
  35. }
  36. static async setSession () {
  37. const payload = {
  38. operator: '/v1/session/start',
  39. params: JSON.stringify(
  40. {
  41. "device": "pc",// 客户端设备信息:pc、pad、mobile、web等
  42. "os": "linux", // 客户端运行的操作系统
  43. "os_version": "3.6", // 操作系统版本
  44. "app": "go-client", // 客户端运行的app
  45. "app_version": "1.0", // // 客户端运行的app版本
  46. "tag": {} // 用于发送自定义标记
  47. }
  48. )
  49. }
  50. const res = await this.clientRequest(payload);
  51. const sessionId = res && res.params && res.params.value;
  52. GlobalUserStorageTool.save('sid',sessionId)
  53. let token = global.token?global.token:await this.getToken()
  54. const bindSessionPayload = {
  55. operator: '/v1/session/bind/uid/by/token',
  56. params: JSON.stringify(
  57. {
  58. "token": token,
  59. })
  60. }
  61. IMClient.setRequestProperty('sid',sessionId)
  62. // return new Promise((resolve, reject) => {
  63. // console.log(sessionId)
  64. this.clientRequest(bindSessionPayload)
  65. return sessionId
  66. // })
  67. }
  68. }