App.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <script>
  2. export default {
  3. globalData: {
  4. token: "",
  5. // 文本消息
  6. socketTask: null,
  7. urlData: "ws://192.168.1.17:12345/api/api_gateway?method=control_center.real_time.im_message",
  8. is_open_socket: false, // 确保websocket是打开状态
  9. list: [],
  10. userId: null, // 用户ID
  11. // 即构
  12. video: null, //房间密码和token
  13. },
  14. onLaunch: function() {
  15. // App启动
  16. var that = this
  17. uni.getStorage({
  18. key: 'session_key',
  19. success: function(res) {
  20. // console.log(res)
  21. that.globalData.token = res.data
  22. // console.log('登录成功了')
  23. that.msgInit(); // 文本初始化
  24. },
  25. fail: function(err) {
  26. // console.log(err)
  27. // console.log('没有登录成功')
  28. }
  29. })
  30. },
  31. onShow: function() {
  32. // App展示在前台
  33. // console.log('App Show')
  34. },
  35. onHide: function() {
  36. // App不再再展示在前台
  37. // console.log('App Hide')
  38. },
  39. methods: {
  40. // 实时通信 - 初始化
  41. msgInit() {
  42. var that = this
  43. // 连接webscoket
  44. // console.log(this.globalData.urlData)
  45. that.globalData.socketTask = uni.connectSocket({
  46. url: this.globalData.urlData + "&token=" + that.globalData.token,
  47. success(data) {
  48. // console.log("websocket连接成功");
  49. }
  50. });
  51. // 发送消息 - 获取对话列表
  52. var obj = {
  53. 'action': 'list', // 动作标识,必填
  54. 'recv_user_id': '', // 接收人用户id, 非必填
  55. 'data': {}
  56. }
  57. that.globalData.socketTask.onOpen((res) => {
  58. that.globalData.socketTask.send({
  59. data: JSON.stringify(obj),
  60. async success(res) {
  61. that.globalData.is_open_socket = true
  62. console.log("消息发送成功");
  63. },
  64. });
  65. })
  66. // // 接收服务器返回的消息
  67. // // 注:只有连接正常打开中 ,才能正常收到消息
  68. that.globalData.socketTask.onMessage((res) => {
  69. console.log("收到服务器内容:");
  70. var val = JSON.parse(res.data)
  71. if (val.action == 'list') {
  72. var obj1 = {
  73. 'action': 'list', // 动作标识,必填
  74. 'recv_user_id': that.globalData.userId, // 接收人用户id, 非必填
  75. 'data': {
  76. 'msg_status': false, // 消息未读
  77. 'msg_info': '', // 发送消息
  78. }
  79. }
  80. that.globalData.socketTask.send({
  81. data: JSON.stringify(obj1),
  82. async success(res) {
  83. // console.log("消息发送成功");
  84. },
  85. });
  86. } else if (val.action == 'none') {
  87. // console.log('进入了')
  88. that.globalData.list = val.data
  89. console.log(that.globalData.list)
  90. this.$store.state.list = val.data
  91. // console.log(this.$store.state.list)
  92. } else if (val.action == 'recv_video') {
  93. // console.log(val.data)
  94. that.globalData.video = val.data
  95. this.$store.state.video = val.data
  96. console.log(this.$store.state.video)
  97. }
  98. });
  99. // console.log(that.socketTask)
  100. },
  101. },
  102. }
  103. </script>
  104. <!-- // App.vue文件 中首行的位置引入,注意给style标签加入lang="scss"属性 -->
  105. <style lang="scss">
  106. /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
  107. @import "uview-ui/index.scss";
  108. </style>