123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- import * as SocketHandle from '../../utils/socket-handle'
- import {
- getQueryString
- } from './../../utils/tools'
- import ImSend from './../../utils/imSend'
- import ImApi from './../../apis/im'
- import CompanyApi from './../../apis/company'
- // pages/web/web.js
- const app = getApp()
- function randomString(e) {
- for (var t = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < e; n++)
- t += i.charAt(Math.floor(Math.random() * i.length));
- return t
- }
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- url: "",
- pullUrl: [],
- pushUrl: '',
- live_base_url: "rtmp://120.24.85.77:1935/hls",
- socketOpts: {},
- room_id: '',
- hasBeLogin: false,
- vr_link: '',
- showWebView: true
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: async function (options) {
- let {
- vr_link
- } = options
- console.log(options)
- vr_link = decodeURIComponent(vr_link)
- this.vrLink = vr_link
- this.isGuide = false
- this.scene = getQueryString(vr_link, 'm')
- this.role = 'customer'
- if (this.scene) {
- await this.getHouseDetail(this.scene)
- this.role = this.companyDetail.guideId === (getApp().globalData.userinfo ? getApp().globalData.userinfo.viewerId : null) ? 'agent' : 'customer'
- }
- let opts = {
- roomId: options.room_id || getQueryString(vr_link, 'room_id') || randomString(18),
- userId: getApp().globalData.userinfo.viewerId,
- role: this.role,
- scene_num: getQueryString(vr_link, 'm')
- }
- this.roomId = opts.roomId
- this.originUrl = `${vr_link}&room_id=${opts.roomId}${options.is_auto? `&vr=1` : ''}`
- this.setData({
- socketOpts: opts,
- url: this.originUrl,
- room_id: opts.roomId,
- house_id: options.house_id || '',
- vr_link: vr_link
- })
- this.socket = SocketHandle.initSocket(this, opts)
- if (app.globalData.token && !getQueryString(this.data.url, 'user_id') && this.role) {
- this.setData({
- url: `${this.originUrl}&role=${this.role}&user_id=${app.globalData.userinfo.viewerId}${this.data.hasBeLogin ? `&vr=1` : ''}`
- })
- }
- },
- onShow() {
- if (app.globalData.token && !getQueryString(this.data.url, 'user_id') && this.role) {
- this.setData({
- url: `${this.originUrl}&role=${this.role}&user_id=${app.globalData.userinfo.viewerId}${this.data.hasBeLogin ? `&vr=1` : ''}`
- })
- }
- },
- onUnload() {
- this.socket.disconnect()
- },
- countLiveUrl(user_id) {
- return `${this.data.live_base_url}/${this.data.room_id}_${user_id}`
- },
- startPlay(data) {
- if (!app.globalData.token) {
- wx.showToast({
- title: '未登录',
- })
- this.setData({
- hasBeLogin: true,
- showLogin: true
- })
- return
- }
- if (!this.hasSend) {
- // this.scene = data.user.scene_num
- this.sendVrCard()
- this.hasSend = true
- }
- this.socket.emit('getUserSig', {
- userId: getApp().globalData.userinfo.viewerId
- })
- },
- createLivePull({
- persons,
- roomId
- }) {
- let arr = []
- persons.forEach(item => {
- if (item.userId !== getApp().globalData.userinfo.viewerId) {
- arr.push(this.countLiveUrl(item.userId))
- }
- })
- this.setData({
- pullUrl: arr
- })
- this.enterAudioRoom()
- },
- someoneLeave() {
- this.setData({
- pullUrl: [],
- pushUrl: ''
- })
- },
- sendVrCard() {
- if (this.companyDetail.guideId === getApp().globalData.userinfo.viewerId) {
- return
- }
- ImApi.addFriend(this.companyDetail.guideId).finally(() => {
- ImSend.sendVrMsg({
- title: `${this.companyDetail.companyName}`,
- detail_images: [this.companyDetail.vrImg],
- vrLink: encodeURIComponent(this.vrLink)
- }, this.data.room_id, this.companyDetail.guideId, true)
- })
- },
- getHouseDetail(scene) {
- return CompanyApi.getCompanyDetailByScene(scene).then(res => {
- console.log(JSON.parse(res.data.introduceImage), 'JSON.parse(res.data.introduceImage)[')
- res.data.vrImg = JSON.parse(res.data.introduceImage)[0].img
- this.companyDetail = res.data
- })
- },
- onShareAppMessage: function (res) {
- var path = `/pages/web/web?vr_link=${encodeURIComponent(this.data.vr_link)}`;
- var imageurl = this.companyDetail.vrImg;
- return {
- title: this.companyDetail.companyName,
- path: path,
- imageUrl: imageurl, // 分享的封面图
- success: () => {
- // 转发成功
- },
- fail: function (err) {
- console.log(err)
- app.ShowModel('网络错误', '转发失败~');
- // 转发失败
- }
- }
- },
- bindmessage(e) {
- const img_url = e.detail.data[0]
- getApp().globalData.shared_img = img_url
- },
- loginSuccess() {
- this.onShow()
- this.hideLogin()
- },
- hideLogin() {
- this.setData({
- showLogin: false
- })
- },
- enterAudioRoom(sig) {
- // index.js
- if (this.hasEnter) {
- return
- }
-
- this.setData({
- trtcConfig: {
- sdkAppID: '1400393268', // 开通实时音视频服务创建应用后分配的 SDKAppID
- userID: getApp().globalData.userinfo.viewerId, // 用户 ID,可以由您的帐号系统指定
- userSig: sig, // 身份签名,相当于登录密码的作用
- template: 'custom', // 画面排版模式
- }
- }, () => {
- let trtcRoomContext = this.selectComponent('#trtcroom')
- let EVENT = trtcRoomContext.EVENT
- if (trtcRoomContext) {
- trtcRoomContext.on(EVENT.LOCAL_JOIN, (event) => {
- // 进房成功后发布本地音频流和视频流
- trtcRoomContext.publishLocalAudio()
- })
- // 监听远端用户的视频流的变更事件
- trtcRoomContext.on(EVENT.REMOTE_VIDEO_ADD, (event) => {
- // 订阅(即播放)远端用户的视频流
- let userID = event.data.userID
- let streamType = event.data.streamType // 'main' or 'aux'
- trtcRoomContext.subscribeRemoteVideo({
- userID: userID,
- streamType: streamType
- })
- })
- // 监听远端用户的音频流的变更事件
- trtcRoomContext.on(EVENT.REMOTE_AUDIO_ADD, (event) => {
- // 订阅(即播放)远端用户的音频流
- let userID = event.data.userID
- trtcRoomContext.subscribeRemoteAudio({
- userID: userID
- })
- })
- trtcRoomContext.enterRoom({
- roomID: this.roomId
- }).then(() => {
- this.hasEnter = true
- }).catch((res) => {
- console.error('room joinRoom 进房失败:', res)
- })
- }
- })
- }
- })
|