瀏覽代碼

增加看房的sig获取,看店的socket修改

xzh 4 年之前
父節點
當前提交
78bebd9efe
共有 3 個文件被更改,包括 42 次插入25 次删除
  1. 4 0
      config/appid.js
  2. 8 2
      server/index.js
  3. 30 23
      server/socketv2.js

+ 4 - 0
config/appid.js

@@ -2,5 +2,9 @@ module.exports = {
   shop: {
     appid: '1400431163',
     key: '8de69820eb514e29ea3c6643f546478cbfe1b609ad3a904e64d13a7f38b5328d'
+  },
+  vrhouse: {
+    appid: '1400433526',
+    key: '6de58833e126d2bf6682997ead07950bc0bda694b267883a6b35a4ba342da0c4'
   }
 }

+ 8 - 2
server/index.js

@@ -1,5 +1,11 @@
 var server = require("http").createServer();
-const getUserSid = require('./../utils/getUserSig')
+const TLSSigAPIv2 = require('tls-sig-api-v2')
+const appids = require('./../config/appid')
+const api = new TLSSigAPIv2.Api(appids.vrhouse.appid, appids.vrhouse.key)
+
+function getSig (userId) {
+  return api.genSig(userId, 86400)
+}
 module.exports = class WebSocketServer {
   constructor() {
     this._pageMap = new Map();
@@ -25,9 +31,9 @@ module.exports = class WebSocketServer {
 
     this.io.on("connection", (socket) => {
       let user = socket.handshake.query
+      user.sig = getSig(user.userId)
       this._users.push(user)
       const roomId = user['roomId']
-      console.log(user)
       socket.join(roomId, () => {
         let roomsPerson = this._roomPerson.get(roomId) || []
         roomsPerson.push(user)

+ 30 - 23
server/socketv2.js

@@ -20,6 +20,11 @@ const EVENT = {
   changeVoiceStatus: 'changeVoiceStatus'
 }
 
+const CODEMAP = {
+  3001: '房间已被解散',
+  3002: '房主主动解散'
+}
+
 module.exports = class WebSocketServer {
   constructor() {
     this._pageMap = new Map();
@@ -43,12 +48,10 @@ module.exports = class WebSocketServer {
     this.io.on("connection", (socket) => {
       let user = socket.handshake.query
       const { roomId, userId, sceneNum, isClient, role, userLimitNum } = user
-      const webRoomId = `${roomId}_web`
+      const webRoomId = `${roomId}_${sceneNum}_web`
       const clientRoom = userId ? `${userId}` : `${userId}${roomId}`
       // 加入客户端与H5单独的通讯房间 
-      console.log(user, '新连接')
       socket.join(clientRoom, () => {
-        console.log('join success', clientRoom, user)
       })
 
       socket.on(EVENT.clientSyncAction, (data) => {
@@ -69,8 +72,8 @@ module.exports = class WebSocketServer {
       
       // 若有房间人数限制
       if (userLimitNum && this._roomPerson.get(roomId) && sortRoomUser(this._roomPerson.get(roomId)).length >= userLimitNum) {
-        console.log(this._roomPerson.get(roomId), 'full')
-        console.log(this._roomPerson.get(roomId).length, userLimitNum,  'full')
+        // console.log(this._roomPerson.get(roomId), 'full')
+        // console.log(this._roomPerson.get(roomId).length, userLimitNum,  'full')
         setTimeout(() => {
           socket.emit('roomInFail', { type: 'full', msg: '房间人数已满' })
         }, 1000)
@@ -83,7 +86,7 @@ module.exports = class WebSocketServer {
       if ( user.role !== 'leader'&& ((this._roomPerson.get(roomId) && !this._roomPerson.get(roomId).find(item => item.role === 'leader')) || (!this._roomPerson.get(roomId)))) {
         console.log('roomClose')
         setTimeout(() => {
-          socket.emit(EVENT.roomClose)
+          socket.emit(EVENT.roomClose, { code: 3001, msg: CODEMAP[3001]})
         }, 1000)
         return this
       }
@@ -96,6 +99,13 @@ module.exports = class WebSocketServer {
           if (userId) {
             user.sig = getSig(userId)
           }
+          let clientPerson = this._roomPerson.get(clientRoom) || []
+          clientPerson.forEach(item => {
+            if (item.userId === user.userId && item.avatar) {
+              user.avatar = item.avatar
+              user.voiceStatus = item.voiceStatus
+            }
+          })
           roomsPerson.push(user)
           this._roomPerson.set(roomId, roomsPerson)
         }
@@ -104,34 +114,32 @@ module.exports = class WebSocketServer {
       if (isClient) {   
         clientPerson.push(user)
         this._roomPerson.set(clientRoom, clientPerson)
-      } else {
-        clientPerson.forEach(item => {
-          if (item.userId === user.userId) {
-            user.avatar = item.avatar
-            user.voiceStatus = item.voiceStatus
-          }
-        })
       }
       
-      
+      if (!isClient) {
+        socket.join(webRoomId, () => {
+          // let roomsPerson = this._roomPerson.get(roomId) || []
+          // socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, { user, roomsPerson: sortRoomUser(roomsPerson) })
+
+        })
+      }
       socket.on(EVENT.startCall, () => {
         if (!isClient) {
-          socket.join(webRoomId, () => {
-            console.log('join webRoom', user)
-            let roomsPerson = this._roomPerson.get(roomId) || []
-            socket.emit(EVENT.roomIn, { roomsPerson: sortRoomUser(roomsPerson) })
-            socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, { user, roomsPerson: sortRoomUser(roomsPerson) })
-          })
+          let roomsPerson = this._roomPerson.get(roomId) || []
+          console.log('startCall', sortRoomUser(roomsPerson) )
+          socket.emit(EVENT.roomIn, { roomsPerson: sortRoomUser(roomsPerson) })
+          socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, { user, roomsPerson: sortRoomUser(roomsPerson) })
         }
       })
 
       socket.on(EVENT.stopCall, () => {
         socket.leave(roomId)
         if (role === 'leader') {
-          socket.broadcast.to(roomId).emit(EVENT.roomClose)
+          socket.broadcast.to(roomId).emit(EVENT.roomClose, { code: 3002, msg: CODEMAP[3002]})
         }
         if (!isClient) {
-          socket.leave(webRoomId)
+          console.log('stopCall', user)
+          // socket.leave(webRoomId)
           let roomsPerson = this._roomPerson.get(roomId) || []
           roomsPerson = removeRoomUser(roomsPerson, user)
           this._roomPerson.set(roomId, roomsPerson)
@@ -201,4 +209,3 @@ function sortRoomUser (roomsPerson) {
   const res = new Map()
   return roomsPerson.filter((a) => !res.has(a.userId) && res.set(a.userId, 1))
 }
-