socket-handle.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const socket_io = require('./socket.io-mp')
  2. const {
  3. IM_HOST
  4. } = require('../config/config')
  5. let io = ''
  6. export function initSocket(page, options) {
  7. const defaultOpts = {
  8. customerId: '',
  9. agentId: '',
  10. role: 'agent',
  11. nickName: '',
  12. roomId: '',
  13. isClient: true
  14. }
  15. io = socket_io(IM_HOST, {
  16. path: '/vr-node',
  17. query: Object.assign(defaultOpts, options)
  18. })
  19. const eventName = {
  20. startPlay: 'answer', // 开始语音
  21. someoneInRoom: 'vr_request', // 有人加入房间
  22. someoneLeaveRoom: 'putup', // 有人离开房间
  23. action: 'action', // 点击操作
  24. }
  25. // 事件监听
  26. io.on(eventName.startPlay, function (data) {
  27. console.log(data, 'startplay')
  28. page.startPlay(data)
  29. })
  30. io.on(eventName.someoneInRoom, function (data) {
  31. if (data.persons.length < 2) {
  32. return
  33. }
  34. console.log(data)
  35. let user = data.persons.find(item => item.userId === getApp().globalData.userinfo.user_id)
  36. // page.enterAudioRoom(user)
  37. wx.getSetting({
  38. success: (res) => {
  39. if (!res.authSetting['scope.record']) {
  40. wx.authorize({
  41. scope: 'scope.record',
  42. success: (res) => {
  43. // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
  44. console.log('同意', res);
  45. page.enterAudioRoom(user)
  46. },
  47. fail: res => {
  48. console.log('拒绝', res);
  49. cbError && cbError();
  50. }
  51. })
  52. } else {
  53. page.enterAudioRoom(user)
  54. }
  55. }
  56. })
  57. })
  58. io.on(eventName.someoneLeaveRoom, function (data) {
  59. page.someoneLeave(data)
  60. })
  61. io.on(eventName.action, (data) => {
  62. if (data && data.name === 'delegation' && data.role === 'agent') {
  63. page.changeDelegetionStatus()
  64. }
  65. })
  66. return io
  67. }
  68. export function emitSendMsg(target_id) {
  69. let app = getApp()
  70. io.emit('sendMsg', {
  71. user_id: app.globalData.userinfo.user_id,
  72. target_id: target_id
  73. })
  74. }
  75. export function emitInRoom() {
  76. let app = getApp()
  77. io.emit('inRoom', {
  78. user_id: app.globalData.userinfo.user_id,
  79. room_id: app.globalData.room_id
  80. })
  81. }
  82. export function emitLeaveRoom() {
  83. let app = getApp()
  84. io.emit('leaveRoom', {
  85. user_id: app.globalData.userinfo.user_id,
  86. room_id: app.globalData.room_id
  87. })
  88. }
  89. export function disconnect() {
  90. return io.disconnect()
  91. }