IMutils.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import TIM from 'tim-js-sdk';
  2. import COS from 'cos-js-sdk-v5';
  3. // 创建 SDK 实例,TIM.create() 方法对于同一个 SDKAppID 只会返回同一份实例
  4. let options = {
  5. SDKAppID: 1400401634, // 接入时需要将0替换为您的即时通信应用的 SDKAppID
  6. };
  7. let tim = TIM.create(options); // SDK 实例通常用 tim 表示
  8. // 设置 SDK 日志输出级别,详细分级请参见 setLogLevel 接口的说明
  9. tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用
  10. // tim.setLogLevel(1); // release级别,SDK 输出关键信息,生产环境时建议使用
  11. // 将腾讯云对象存储服务 SDK (以下简称 COS SDK)注册为插件,IM SDK 发送文件、图片等消息时,需要用到腾讯云的 COS 服务
  12. // HTML5 环境,注册 COS SDK
  13. tim.registerPlugin({ 'cos-js-sdk': COS });
  14. // 监听事件,如:
  15. tim.on(TIM.EVENT.SDK_READY, function (event) {
  16. // 收到离线消息和会话列表同步完毕通知,接入侧可以调用 sendMessage 等需要鉴权的接口
  17. // event.name - TIM.EVENT.SDK_READY
  18. });
  19. tim.on(TIM.EVENT.MESSAGE_RECEIVED, function (event) {
  20. // 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面
  21. // event.name - TIM.EVENT.MESSAGE_RECEIVED
  22. // event.data - 存储 Message 对象的数组 - [Message]
  23. });
  24. tim.on(TIM.EVENT.MESSAGE_REVOKED, function (event) {
  25. // 收到消息被撤回的通知。使用前需要将SDK版本升级至v2.4.0或以上。
  26. // event.name - TIM.EVENT.MESSAGE_REVOKED
  27. // event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isRevoked 属性值为 true
  28. });
  29. tim.on(TIM.EVENT.MESSAGE_READ_BY_PEER, function (event) {
  30. // SDK 收到对端已读消息的通知,即已读回执。使用前需要将SDK版本升级至v2.7.0或以上。仅支持单聊会话。
  31. // event.name - TIM.EVENT.MESSAGE_READ_BY_PEER
  32. // event.data - event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isPeerRead 属性值为 true
  33. });
  34. tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, function (event) {
  35. // 收到会话列表更新通知,可通过遍历 event.data 获取会话列表数据并渲染到页面
  36. // event.name - TIM.EVENT.CONVERSATION_LIST_UPDATED
  37. // event.data - 存储 Conversation 对象的数组 - [Conversation]
  38. });
  39. tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function (event) {
  40. // 收到群组列表更新通知,可通过遍历 event.data 获取群组列表数据并渲染到页面
  41. // event.name - TIM.EVENT.GROUP_LIST_UPDATED
  42. // event.data - 存储 Group 对象的数组 - [Group]
  43. });
  44. tim.on(TIM.EVENT.PROFILE_UPDATED, function (event) {
  45. // 收到自己或好友的资料变更通知
  46. // event.name - TIM.EVENT.PROFILE_UPDATED
  47. // event.data - 存储 Profile 对象的数组 - [Profile]
  48. });
  49. tim.on(TIM.EVENT.BLACKLIST_UPDATED, function (event) {
  50. // 收到黑名单列表更新通知
  51. // event.name - TIM.EVENT.BLACKLIST_UPDATED
  52. // event.data - 存储 userID 的数组 - [userID]
  53. });
  54. tim.on(TIM.EVENT.ERROR, function (event) {
  55. // 收到 SDK 发生错误通知,可以获取错误码和错误信息
  56. // event.name - TIM.EVENT.ERROR
  57. // event.data.code - 错误码
  58. // event.data.message - 错误信息
  59. });
  60. tim.on(TIM.EVENT.SDK_NOT_READY, function (event) {
  61. // 收到 SDK 进入 not ready 状态通知,此时 SDK 无法正常工作
  62. // event.name - TIM.EVENT.SDK_NOT_READY
  63. });
  64. tim.on(TIM.EVENT.KICKED_OUT, function (event) {
  65. // 收到被踢下线通知
  66. // event.name - TIM.EVENT.KICKED_OUT
  67. // event.data.type - 被踢下线的原因,例如 :
  68. // - TIM.TYPES.KICKED_OUT_MULT_ACCOUNT 多实例登录被踢
  69. // - TIM.TYPES.KICKED_OUT_MULT_DEVICE 多终端登录被踢
  70. // - TIM.TYPES.KICKED_OUT_USERSIG_EXPIRED 签名过期被踢(v2.4.0起支持)。
  71. });
  72. tim.on(TIM.EVENT.NET_STATE_CHANGE, function (event) {
  73. // 网络状态发生改变(v2.5.0 起支持)。
  74. // event.name - TIM.EVENT.NET_STATE_CHANGE
  75. // event.data.state 当前网络状态,枚举值及说明如下:
  76. // - TIM.TYPES.NET_STATE_CONNECTED - 已接入网络
  77. // - TIM.TYPES.NET_STATE_CONNECTING - 连接中。很可能遇到网络抖动,SDK 在重试。接入侧可根据此状态提示“当前网络不稳定”或“连接中”
  78. // - TIM.TYPES.NET_STATE_DISCONNECTED - 未接入网络。接入侧可根据此状态提示“当前网络不可用”。SDK 仍会继续重试,若用户网络恢复,SDK 会自动同步消息
  79. });
  80. // 开始登录
  81. tim.login({
  82. userID: 2105,
  83. userSig:
  84. 'eJyrVgrxCdYrSy1SslIy0jNQ0gHzM1NS80oy0zIhwoYGplDx4pTsxIKCzBQlK0MTAwMTA0MzYxOITGpFQWZRKlDc1NTUyMDAACJakpkLFrM0Bao1MIGqLc5MBxqbGGqUnZzlFZWiHRoeFaOf45eX6h*j7*nkXZ4XmOIeleYTXBbp7VNUHpqTE*xqq1QLANeJMS4_',
  85. });