web.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. import * as SocketHandle from '../../utils/socket-handle'
  2. import { getQueryString } from './../../utils/tools'
  3. import HouseApi from './../../apis/house'
  4. // pages/web/web.js
  5. const app = getApp()
  6. function randomString(e) {
  7. for (var t = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < e; n++)
  8. t += i.charAt(Math.floor(Math.random() * i.length));
  9. return t
  10. }
  11. Page({
  12. /**
  13. * 页面的初始数据
  14. */
  15. data: {
  16. url: "",
  17. pullUrl: [],
  18. pushUrl: '',
  19. live_base_url: "rtmp://120.24.85.77:1935/hls",
  20. socketOpts: {},
  21. room_id: 'test1'
  22. },
  23. /**
  24. * 生命周期函数--监听页面加载
  25. */
  26. onLoad: function (options) {
  27. let { vr_link } = options
  28. vr_link = decodeURIComponent(vr_link)
  29. this.scene = getQueryString(vr_link, 'm')
  30. let opts = {
  31. roomId: options.room_id || getQueryString(vr_link, 'room_id') || randomString(18),
  32. userId: getApp().globalData.userinfo.user_id,
  33. customerId: getApp().globalData.userinfo.user_id,
  34. nickname: getApp().globalData.userinfo.name,
  35. role: 'agent',
  36. scene_num: this.scene
  37. }
  38. this.setData({
  39. socketOpts: opts,
  40. url: `${vr_link}&room_id=${opts.roomId}`,
  41. room_id: opts.roomId,
  42. house_id: options.house_id
  43. })
  44. this.roomId = opts.roomId
  45. console.log(this.data.url)
  46. this.getHouseDetail()
  47. this.socket = SocketHandle.initSocket(this, opts)
  48. },
  49. onShow() {
  50. if (app.globalData.token && !getQueryString(this.data.url, 'user_id')) {
  51. this.setData({
  52. url: `${this.data.url}&role=agent&user_id=${app.globalData.userinfo.user_id}`
  53. })
  54. }
  55. },
  56. onUnload () {
  57. this.socket.disconnect()
  58. },
  59. countLiveUrl(user_id) {
  60. return `${this.data.live_base_url}/${this.data.room_id}_${user_id}`
  61. },
  62. startPlay(data) {
  63. if (!app.globalData.token) {
  64. wx.showToast({
  65. title: '未登录',
  66. })
  67. wx.navigateTo({
  68. url: '/pages/login/login',
  69. })
  70. return
  71. }
  72. // const {
  73. // roomId
  74. // } = data
  75. // console.log(this.countLiveUrl(getApp().globalData.userinfo.user_id), 'this.countLiveUrl(getApp().globalData.userinfo.user_id)')
  76. // this.setData({
  77. // pushUrl: this.countLiveUrl(getApp().globalData.userinfo.user_id)
  78. // })
  79. },
  80. createLivePull({persons, roomId}) {
  81. let arr = []
  82. console.log(persons, 'persons')
  83. persons.forEach(item => {
  84. console.log(item)
  85. arr.push(this.countLiveUrl(item.userId))
  86. })
  87. console.log(persons)
  88. // const pullUrl = this.countLiveUrl(roomId)
  89. this.setData({
  90. pullUrl: arr
  91. })
  92. },
  93. someoneLeave() {
  94. this.trtcRoomContext && this.trtcRoomContext.exitRoom()
  95. },
  96. getHouseDetail () {
  97. if (!this.data.house_id) {
  98. return
  99. }
  100. HouseApi.houseDetail(this.data.house_id).then(res => {
  101. let house = res.data
  102. house.detail_images = JSON.parse(house.detail_images)
  103. this.setData({
  104. house
  105. })
  106. })
  107. },
  108. onShareAppMessage: function (res) {
  109. var path =`/pages/web/web?house_id=${this.data.house_id}&vr_link=${this.data.house.vrLink}`;
  110. var arr = this.data.house.detail_images;
  111. var imageurl = arr[0];
  112. console.log(path)
  113. return {
  114. title: this.data.house.title,
  115. path: path,
  116. imageUrl: imageurl, // 分享的封面图
  117. success: () => {
  118. // 转发成功
  119. },
  120. fail: function(err) {
  121. console.log(err)
  122. app.ShowModel('网络错误', '转发失败~');
  123. // 转发失败
  124. }
  125. }
  126. },
  127. enterAudioRoom(user, noEnter) {
  128. this.hasEnter = true
  129. getApp().globalData.audioUser = user
  130. console.log(user, 'user')
  131. this.setData({
  132. trtcConfig: {
  133. scene: 'rtc',
  134. sdkAppID: '1400433526', // 开通实时音视频服务创建应用后分配的 SDKAppID
  135. userID: user.userId, // 用户 ID,可以由您的帐号系统指定
  136. userSig: user.sig, // 身份签名,相当于登录密码的作用
  137. template: 'custom', // 画面排版模式
  138. }
  139. }, () => {
  140. this.trtcRoomContext = this.selectComponent('#trtcroom')
  141. let EVENT =this.trtcRoomContext.EVENT
  142. if (this.trtcRoomContext) {
  143. this.trtcRoomContext.on(EVENT.LOCAL_JOIN, (event) => {
  144. this.publishLocalAudio()
  145. })
  146. // 监听远端用户的音频流的变更事件
  147. this.trtcRoomContext.on(EVENT.REMOTE_AUDIO_ADD, (event) => {
  148. // 订阅(即播放)远端用户的音频流
  149. let userID = event.data.userID
  150. this.trtcRoomContext.subscribeRemoteAudio({
  151. userID: userID
  152. })
  153. })
  154. // this.trtcRoomContext.on(EVENT.LOCAL_AUDIO_VOLUME_UPDATE, event => {
  155. // console.log(event)
  156. // })
  157. this.trtcRoomContext.enterRoom({
  158. roomID: this.roomId
  159. }).then(() => {
  160. console.log('成功进入房间')
  161. }).catch((res) => {
  162. console.error('room joinRoom 进房失败:', res)
  163. })
  164. }
  165. })
  166. },
  167. unpublishLocalAudio () {
  168. this.trtcRoomContext && this.trtcRoomContext.unpublishLocalAudio()
  169. },
  170. publishLocalAudio () {
  171. this.trtcRoomContext && this.trtcRoomContext.publishLocalAudio()
  172. }
  173. })