ソースを参照

看店版本的socket服务

xzh 5 年 前
コミット
23a7c3b885
6 ファイル変更932 行追加58 行削除
  1. 833 0
      package-lock.json
  2. 2 0
      package.json
  3. 31 19
      server/app.js
  4. 26 30
      server/index.js
  5. 34 9
      server/socketv2.js
  6. 6 0
      utils/getUserSig.js

+ 833 - 0
package-lock.json

@@ -0,0 +1,833 @@
+{
+  "name": "server",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
+      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "after": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npm.taobao.org/after/download/after-0.8.2.tgz",
+      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+    },
+    "arraybuffer.slice": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz",
+      "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU="
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz",
+      "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0="
+    },
+    "backo2": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz",
+      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+    },
+    "base64-arraybuffer": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.5.tgz",
+      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
+    },
+    "base64id": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/base64id/download/base64id-2.0.0.tgz",
+      "integrity": "sha1-J3Csa8R9MSr5eov5pjQ0LgzSXLY="
+    },
+    "better-assert": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/better-assert/download/better-assert-1.0.2.tgz",
+      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+      "requires": {
+        "callsite": "1.0.0"
+      }
+    },
+    "blob": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npm.taobao.org/blob/download/blob-0.0.5.tgz?cache=0&sync_timestamp=1580722883513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fblob%2Fdownload%2Fblob-0.0.5.tgz",
+      "integrity": "sha1-1oDu7yX4zZGtUz9bAe7UjmTK9oM="
+    },
+    "cache-content-type": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz",
+      "integrity": "sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=",
+      "requires": {
+        "mime-types": "^2.1.18",
+        "ylru": "^1.2.0"
+      }
+    },
+    "callsite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/callsite/download/callsite-1.0.0.tgz",
+      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+    },
+    "component-bind": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz",
+      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
+    },
+    "component-emitter": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz",
+      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+    },
+    "component-inherit": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz",
+      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
+      "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+          "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+        }
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
+    },
+    "cookie": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz?cache=0&sync_timestamp=1587525865178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookie%2Fdownload%2Fcookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+    },
+    "cookies": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npm.taobao.org/cookies/download/cookies-0.8.0.tgz",
+      "integrity": "sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=",
+      "requires": {
+        "depd": "~2.0.0",
+        "keygrip": "~1.1.0"
+      }
+    },
+    "debug": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
+      "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
+      "requires": {
+        "ms": "^2.1.1"
+      }
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1587708810466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz",
+      "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
+      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+    },
+    "depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/depd/download/depd-2.0.0.tgz",
+      "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8="
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+    },
+    "engine.io": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npm.taobao.org/engine.io/download/engine.io-3.4.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io%2Fdownload%2Fengine.io-3.4.1.tgz",
+      "integrity": "sha1-phy8E/oMsn2UU/0HminumAVksGk=",
+      "requires": {
+        "accepts": "~1.3.4",
+        "base64id": "2.0.0",
+        "cookie": "0.3.1",
+        "debug": "~4.1.0",
+        "engine.io-parser": "~2.2.0",
+        "ws": "^7.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "engine.io-client": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npm.taobao.org/engine.io-client/download/engine.io-client-3.4.1.tgz",
+      "integrity": "sha1-ki3bR+7Ny1QRNqk67q0kcY/QVGE=",
+      "requires": {
+        "component-emitter": "1.2.1",
+        "component-inherit": "0.0.3",
+        "debug": "~4.1.0",
+        "engine.io-parser": "~2.2.0",
+        "has-cors": "1.1.0",
+        "indexof": "0.0.1",
+        "parseqs": "0.0.5",
+        "parseuri": "0.0.5",
+        "ws": "~6.1.0",
+        "xmlhttprequest-ssl": "~1.5.4",
+        "yeast": "0.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ws": {
+          "version": "6.1.4",
+          "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.1.4.tgz",
+          "integrity": "sha1-W1yIAK+rkl6UzLKdFTyNAsF3bvk=",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "engine.io-parser": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io-parser%2Fdownload%2Fengine.io-parser-2.2.0.tgz",
+      "integrity": "sha1-MSxIlPV9UqArQgho2ntcHISvgO0=",
+      "requires": {
+        "after": "0.8.2",
+        "arraybuffer.slice": "~0.0.7",
+        "base64-arraybuffer": "0.1.5",
+        "blob": "0.0.5",
+        "has-binary2": "~1.0.2"
+      }
+    },
+    "error-inject": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz",
+      "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc="
+    },
+    "es-abstract": {
+      "version": "1.17.5",
+      "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz",
+      "integrity": "sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk=",
+      "requires": {
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1",
+        "is-callable": "^1.1.5",
+        "is-regex": "^1.0.5",
+        "object-inspect": "^1.7.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.0",
+        "string.prototype.trimleft": "^2.1.1",
+        "string.prototype.trimright": "^2.1.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=",
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
+      "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-binary2": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/has-binary2/download/has-binary2-1.0.3.tgz?cache=0&sync_timestamp=1587049420544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-binary2%2Fdownload%2Fhas-binary2-1.0.3.tgz",
+      "integrity": "sha1-d3asYn8+p3JQz8My2rfd9eT10R0=",
+      "requires": {
+        "isarray": "2.0.1"
+      }
+    },
+    "has-cors": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/has-cors/download/has-cors-1.1.0.tgz",
+      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
+    },
+    "has-symbols": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz",
+      "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg="
+    },
+    "http-assert": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/http-assert/download/http-assert-1.4.1.tgz",
+      "integrity": "sha1-xfcl1neqfoc+9zYZm4lobM6zeHg=",
+      "requires": {
+        "deep-equal": "~1.0.1",
+        "http-errors": "~1.7.2"
+      },
+      "dependencies": {
+        "deep-equal": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1587708810466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz",
+          "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
+        }
+      }
+    },
+    "http-errors": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz",
+      "integrity": "sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY=",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+        },
+        "setprototypeof": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
+          "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
+        }
+      }
+    },
+    "indexof": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npm.taobao.org/indexof/download/indexof-0.0.1.tgz",
+      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "is-arguments": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz",
+      "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM="
+    },
+    "is-callable": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz",
+      "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs="
+    },
+    "is-date-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729165697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz",
+      "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4="
+    },
+    "is-generator-function": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.7.tgz",
+      "integrity": "sha1-0hMuUpuwAAp/gHlNS99c1eWBNSI="
+    },
+    "is-regex": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz",
+      "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=",
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz",
+      "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=",
+      "requires": {
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "isarray": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-2.0.1.tgz",
+      "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
+    },
+    "keygrip": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/keygrip/download/keygrip-1.1.0.tgz",
+      "integrity": "sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=",
+      "requires": {
+        "tsscmp": "1.0.6"
+      }
+    },
+    "koa": {
+      "version": "2.11.0",
+      "resolved": "https://registry.npm.taobao.org/koa/download/koa-2.11.0.tgz?cache=0&sync_timestamp=1572232118391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa%2Fdownload%2Fkoa-2.11.0.tgz",
+      "integrity": "sha1-/lpRxG9WbSdjLdXcj9XX3UT5NaQ=",
+      "requires": {
+        "accepts": "^1.3.5",
+        "cache-content-type": "^1.0.0",
+        "content-disposition": "~0.5.2",
+        "content-type": "^1.0.4",
+        "cookies": "~0.8.0",
+        "debug": "~3.1.0",
+        "delegates": "^1.0.0",
+        "depd": "^1.1.2",
+        "destroy": "^1.0.4",
+        "encodeurl": "^1.0.2",
+        "error-inject": "^1.0.0",
+        "escape-html": "^1.0.3",
+        "fresh": "~0.5.2",
+        "http-assert": "^1.3.0",
+        "http-errors": "^1.6.3",
+        "is-generator-function": "^1.0.7",
+        "koa-compose": "^4.1.0",
+        "koa-convert": "^1.2.0",
+        "on-finished": "^2.3.0",
+        "only": "~0.0.2",
+        "parseurl": "^1.3.2",
+        "statuses": "^1.5.0",
+        "type-is": "^1.6.16",
+        "vary": "^1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "depd": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        }
+      }
+    },
+    "koa-compose": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/koa-compose/download/koa-compose-4.1.0.tgz",
+      "integrity": "sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc="
+    },
+    "koa-convert": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz",
+      "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=",
+      "requires": {
+        "co": "^4.6.0",
+        "koa-compose": "^3.0.0"
+      },
+      "dependencies": {
+        "koa-compose": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz",
+          "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=",
+          "requires": {
+            "any-promise": "^1.1.0"
+          }
+        }
+      }
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+    },
+    "mime-db": {
+      "version": "1.44.0",
+      "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz?cache=0&sync_timestamp=1587603342053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.44.0.tgz",
+      "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I="
+    },
+    "mime-types": {
+      "version": "2.1.27",
+      "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz",
+      "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=",
+      "requires": {
+        "mime-db": "1.44.0"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz",
+      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
+      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
+    },
+    "nodejs-websocket": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/nodejs-websocket/download/nodejs-websocket-1.7.2.tgz",
+      "integrity": "sha1-lKvR4kj1fU0cZj3sODEBXG2tmKY="
+    },
+    "object-component": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npm.taobao.org/object-component/download/object-component-0.0.3.tgz",
+      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
+    },
+    "object-inspect": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz",
+      "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc="
+    },
+    "object-is": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.2.tgz",
+      "integrity": "sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
+      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4="
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz",
+      "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=",
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "only": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npm.taobao.org/only/download/only-0.0.2.tgz",
+      "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q="
+    },
+    "parseqs": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npm.taobao.org/parseqs/download/parseqs-0.0.5.tgz",
+      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseuri": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npm.taobao.org/parseuri/download/parseuri-0.0.5.tgz?cache=0&sync_timestamp=1568821002283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparseuri%2Fdownload%2Fparseuri-0.0.5.tgz",
+      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
+      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ="
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz?cache=0&sync_timestamp=1576388141321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.0.tgz",
+      "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0-next.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz",
+      "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk="
+    },
+    "setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.2.0.tgz",
+      "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ="
+    },
+    "socket.io": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/socket.io/download/socket.io-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io%2Fdownload%2Fsocket.io-2.3.0.tgz",
+      "integrity": "sha1-zXYu1qT67KWbwfPiQ8CWkxHrc/s=",
+      "requires": {
+        "debug": "~4.1.0",
+        "engine.io": "~3.4.0",
+        "has-binary2": "~1.0.2",
+        "socket.io-adapter": "~1.1.0",
+        "socket.io-client": "2.3.0",
+        "socket.io-parser": "~3.4.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "socket.io-adapter": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/socket.io-adapter/download/socket.io-adapter-1.1.2.tgz",
+      "integrity": "sha1-qz8Nb2a4/H/KOVmrWZH4IiF4m+k="
+    },
+    "socket.io-client": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.3.0.tgz",
+      "integrity": "sha1-FNW6LgC5vNFFrkQ6uWs/hsvMG7Q=",
+      "requires": {
+        "backo2": "1.0.2",
+        "base64-arraybuffer": "0.1.5",
+        "component-bind": "1.0.0",
+        "component-emitter": "1.2.1",
+        "debug": "~4.1.0",
+        "engine.io-client": "~3.4.0",
+        "has-binary2": "~1.0.2",
+        "has-cors": "1.1.0",
+        "indexof": "0.0.1",
+        "object-component": "0.0.3",
+        "parseqs": "0.0.5",
+        "parseuri": "0.0.5",
+        "socket.io-parser": "~3.3.0",
+        "to-array": "0.1.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "socket.io-parser": {
+          "version": "3.3.0",
+          "resolved": "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.3.0.tgz",
+          "integrity": "sha1-K1KpalCf3zFEC6QP7WCUx9TxJi8=",
+          "requires": {
+            "component-emitter": "1.2.1",
+            "debug": "~3.1.0",
+            "isarray": "2.0.1"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+              "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+              "requires": {
+                "ms": "2.0.0"
+              }
+            },
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+            }
+          }
+        }
+      }
+    },
+    "socket.io-parser": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.4.0.tgz",
+      "integrity": "sha1-Nwu0oVHfL3fOM0X/VacHLMbpVlo=",
+      "requires": {
+        "component-emitter": "1.2.1",
+        "debug": "~4.1.0",
+        "isarray": "2.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1587327902535&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz?cache=0&sync_timestamp=1586465374694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.1.tgz",
+      "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "string.prototype.trimleft": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz?cache=0&sync_timestamp=1585584322600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimleft%2Fdownload%2Fstring.prototype.trimleft-2.1.2.tgz",
+      "integrity": "sha1-RAiqLl1t3QyagHObCH+8BnwDs8w=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5",
+        "string.prototype.trimstart": "^1.0.0"
+      }
+    },
+    "string.prototype.trimright": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz",
+      "integrity": "sha1-x28c7zDyG7rYr+uNsVEUls+w8qM=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5",
+        "string.prototype.trimend": "^1.0.0"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz?cache=0&sync_timestamp=1586465375114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.1.tgz",
+      "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "tls-sig-api": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/tls-sig-api/download/tls-sig-api-1.0.2.tgz",
+      "integrity": "sha1-g2f+Nz+TEzyfaSyEs76UEyT/L74="
+    },
+    "tls-sig-api-v2": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/tls-sig-api-v2/download/tls-sig-api-v2-1.0.0.tgz",
+      "integrity": "sha1-xKrRXyYUH7R4caEw3Pbo59uMlVI="
+    },
+    "to-array": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz",
+      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
+    },
+    "tsscmp": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/tsscmp/download/tsscmp-1.0.6.tgz",
+      "integrity": "sha1-hbmVg6w1iexL/vgltQAKqRHWBes="
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
+      "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+    },
+    "ws": {
+      "version": "7.2.5",
+      "resolved": "https://registry.npm.taobao.org/ws/download/ws-7.2.5.tgz",
+      "integrity": "sha1-q7E3DUYmpanNedjeQEqhizRl0Q0="
+    },
+    "xmlhttprequest-ssl": {
+      "version": "1.5.5",
+      "resolved": "https://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.5.tgz?cache=0&sync_timestamp=1564594177335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlhttprequest-ssl%2Fdownload%2Fxmlhttprequest-ssl-1.5.5.tgz",
+      "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
+    },
+    "yeast": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz",
+      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
+    },
+    "ylru": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz",
+      "integrity": "sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8="
+    }
+  }
+}

+ 2 - 0
package.json

@@ -42,6 +42,8 @@
     "setprototypeof": "^1.1.1",
     "socket.io": "^2.3.0",
     "statuses": "^1.5.0",
+    "tls-sig-api": "^1.0.2",
+    "tls-sig-api-v2": "^1.0.0",
     "toidentifier": "^1.0.0",
     "tsscmp": "^1.0.6",
     "type-is": "^1.6.18",

+ 31 - 19
server/app.js

@@ -11,7 +11,6 @@ module.exports = class WebSocketServer {
 
   create() {
     this.io = require("socket.io")(server, {
-
       path: "/vr-node",
       serveClient: false,
       // below are engine.IO options
@@ -25,45 +24,58 @@ module.exports = class WebSocketServer {
     this.io.on("connection", (socket) => {
       let user = socket.handshake.query
       this._users.push(user)
-      const roomId = user['roomId']
-      console.log(user)
-      socket.join(roomId, () => {
-        let roomsPerson = this._roomPerson.get(roomId) || []
-        roomsPerson.push(user)
-        this._roomPerson.set(roomId, roomsPerson)
-        // 只派发非小程序端的socket连接数及其user数据
-        if (!user[isClient]) {
-          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient) });
-        }
-      });
-
+      let roomId = user['roomId']
+      
+      
+      
+      // 一个房间只允许存在一个场景码,若场景不对,则改变房间号
+      roomId = user['roomId'] + user.scene_num
+      let roomsPerson = this._roomPerson.get(roomId) || []
+      const client_room = user['roomId']
+      socket.join(client_room);
+      if (!user['isClient']) {
+        socket.join(roomId, () => {
+          roomsPerson.push(user)
+          this._roomPerson.set(roomId, roomsPerson)
+          // 只派发非小程序端的socket连接数及其user数据
+          console.log(user.scene_num, user.role)
+          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
+          this.io.to(client_room).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
+        });
+      }
+      
+      
       socket.on('startCall', () => {
         socket.broadcast.to(roomId).emit('answer', { user })
+        socket.broadcast.to(client_room).emit('answer', { user })
       })
 
       socket.on('stopCall', () => {
         socket.broadcast.to(roomId).emit('putup', { user })
+        socket.broadcast.to(client_room).emit('putup', { user })
       })
 
 
 
       socket.on("getJson", (data) => {
         if (roomId) {
-          this.io.to(roomId).emit("action",  data.content.action);
+          if (data.content.action) {
+            this.io.to(roomId).emit("action",  data.content.action);
+            socket.broadcast.to(client_room).emit('action', data.content.action)
+          }
+          
           this.io.to(roomId).emit("vr_response", data);
         }
       });
 
-      console.log("WebSocket服务端建立完毕");
-
       socket.on("disconnect", (reason) => {
         let roomsPerson = this._roomPerson.get(roomId) || []
         // 断开连接的把roomsPerson中的user去掉
         roomsPerson = roomsPerson.filter(item => item !== user)
         this._roomPerson.set(roomId, roomsPerson)
         if (!user.isClient) {
-          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient) });
-          console.log("关闭连接", reason);
+          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
+          this.io.to(client_room).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
         }
       });
       socket.on("error", function (reason) {
@@ -79,4 +91,4 @@ module.exports = class WebSocketServer {
     this.server.disconnect(true);
   }
 
-};
+};

+ 26 - 30
server/index.js

@@ -1,4 +1,5 @@
 var server = require("http").createServer();
+const getUserSid = require('./../utils/getUserSig')
 module.exports = class WebSocketServer {
   constructor() {
     this._pageMap = new Map();
@@ -11,6 +12,7 @@ module.exports = class WebSocketServer {
 
   create() {
     this.io = require("socket.io")(server, {
+
       path: "/vr-node",
       serveClient: false,
       // below are engine.IO options
@@ -24,61 +26,55 @@ module.exports = class WebSocketServer {
     this.io.on("connection", (socket) => {
       let user = socket.handshake.query
       this._users.push(user)
-      let roomId = user['roomId']
-      
-      // 一个房间只允许存在一个场景码,若场景不对,则改变房间号
-      roomId = user['roomId'] + user.scene_num
-      let roomsPerson = this._roomPerson.get(roomId) || []
-      const client_room = user['roomId']
-      socket.join(client_room);
-      if (!user['isClient']) {
-        socket.join(roomId, () => {
-          roomsPerson.push(user)
-          this._roomPerson.set(roomId, roomsPerson)
-          // 只派发非小程序端的socket连接数及其user数据
-          console.log(user.scene_num, user.role)
-          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
-          this.io.to(client_room).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
-        });
-      }
-      
-      
+      const roomId = user['roomId']
+      console.log(user)
+      socket.join(roomId, () => {
+        let roomsPerson = this._roomPerson.get(roomId) || []
+        roomsPerson.push(user)
+        this._roomPerson.set(roomId, roomsPerson)
+        // 只派发非小程序端的socket连接数及其user数据i
+        if (!user['isClient']){
+ 	      this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient) });
+        }
+      })
+
       socket.on('startCall', () => {
         socket.broadcast.to(roomId).emit('answer', { user })
-        socket.broadcast.to(client_room).emit('answer', { user })
       })
 
       socket.on('stopCall', () => {
         socket.broadcast.to(roomId).emit('putup', { user })
-        socket.broadcast.to(client_room).emit('putup', { user })
       })
 
 
 
       socket.on("getJson", (data) => {
         if (roomId) {
-          if (data.content.action) {
-            this.io.to(roomId).emit("action",  data.content.action);
-            socket.broadcast.to(client_room).emit('action', data.content.action)
-          }
-          
+          this.io.to(roomId).emit("action",  data.content.action);
           this.io.to(roomId).emit("vr_response", data);
         }
       });
 
+      console.log("WebSocket服务端建立完毕");
+
       socket.on("disconnect", (reason) => {
         let roomsPerson = this._roomPerson.get(roomId) || []
         // 断开连接的把roomsPerson中的user去掉
         roomsPerson = roomsPerson.filter(item => item !== user)
         this._roomPerson.set(roomId, roomsPerson)
-        if (!user.isClient) {
-          this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
-          this.io.to(client_room).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient && item.scene_num === user.scene_num) });
-        }
+	      if (!user.isClient) {
+        	this.io.to(roomId).emit('vr_request', { persons: roomsPerson.filter(item => !item.isClient) });
+        	console.log("关闭连接", reason);
+	      }
       });
       socket.on("error", function (reason) {
         console.log("异常关闭", reason)
       });
+
+      socket.on('getUserSig', user => {
+        let sig = getUserSid.genSig(user.userId, 86400)
+        socket.emit('getUserSig', sig)
+      })
       return this;
 
     })

+ 34 - 9
server/socketv2.js

@@ -35,7 +35,7 @@ module.exports = class WebSocketServer {
 
     this.io.on("connection", (socket) => {
       let user = socket.handshake.query
-      const { roomId, userId, sceneNum, isClient, role } = user
+      const { roomId, userId, sceneNum, isClient, role, userLimitNum } = user
       const webRoomId = `${roomId}${sceneNum}`
       const clientRoom = userId ? `${userId}` : `${sceneNum}${roomId}`
       // 加入客户端与H5单独的通讯房间 
@@ -43,6 +43,18 @@ module.exports = class WebSocketServer {
         console.log('join success', clientRoom, user)
       })
 
+      // 若有房间人数限制
+      if (userLimitNum && this._roomPerson.get(roomId) && this._roomPerson.get(roomId).length >= userLimitNum) {
+        socket.emit('roomInFail', { type: 'full', msg: '房间人数已满' })
+        return this
+      }
+
+      // 若已结束、房间已关闭
+      if ( this._roomPerson.get(roomId) && !this._roomPerson.get(roomId).find(item => item.role === 'leader')) {
+        socket.broadcast.to(roomId).emit(EVENT.roomClose)
+        return
+      }
+
       // 加入所有连接数的通讯房间
       socket.join(roomId, () => {
         // 只有h5才能加入H5端的房间
@@ -80,17 +92,17 @@ module.exports = class WebSocketServer {
       })
 
       socket.on(EVENT.stopCall, () => {
+        console.log('stopCall', user)
         socket.leave(roomId)
+        if (role === 'leader') {
+          socket.broadcast.to(roomId).emit(EVENT.roomClose)
+        }
         if (!isClient) {
           socket.leave(webRoomId)
-          if (role === 'leader') {
-            socket.broadcast.to(roomId).emit(EVENT.roomClose)
-          }
           let roomsPerson = this._roomPerson.get(roomId) || []
           roomsPerson = roomsPerson.filter(item => item.userId !== user.userId)
           this._roomPerson.set(roomId, roomsPerson)
           socket.broadcast.to(roomId).emit(EVENT.someOneLeaveRoom, { user, roomsPerson })
-          
         }
       })
 
@@ -122,20 +134,33 @@ module.exports = class WebSocketServer {
       })
 
       socket.on("disconnect", (reason) => {
+        console.log(reason, 'reason')
         socket.leave(roomId)
         if (!isClient) {
-          if (role === 'leader') {
-            socket.broadcast.to(roomId).emit(EVENT.roomClose)
-          }
+          // if (role === 'leader' && reason !== 'ping timeout') {
+          //   socket.broadcast.to(roomId).emit(EVENT.roomClose)
+          // }
           let roomsPerson = this._roomPerson.get(roomId) || []
           roomsPerson = roomsPerson.filter(item => item.userId !== user.userId)
           this._roomPerson.set(roomId, roomsPerson)
-          socket.broadcast.to(roomId).emit(EVENT.someOneLeaveRoom, { user, roomsPerson })
+          // socket.broadcast.to(roomId).emit(EVENT.someOneLeaveRoom, { user, roomsPerson })
           socket.leave(webRoomId)
           socket.leave(roomId)
         }
       })
 
+      socket.on('reconnect', () => {
+        console.log('重连', user)
+        socket.join(roomId)
+        if (!isClient) {
+          let roomsPerson = this._roomPerson.get(roomId) || []
+          roomsPerson.push(user)
+          this._roomPerson.set(roomId, roomsPerson)
+          socket.join(webRoomId)
+          socket.join(roomId)
+        }
+      })
+
       socket.on("error", function (reason) {
         console.log("异常关闭", reason)
       })

+ 6 - 0
utils/getUserSig.js

@@ -0,0 +1,6 @@
+const TLSSigAPIv2 = require('tls-sig-api-v2')
+const key = '15e3168d4f89726055fafea9eaf95c0059e2ed4ada2452a512705533b6ba84af'
+const sdkAppId = '1400393268'
+const api = new TLSSigAPIv2.Api(sdkAppId, key)
+
+module.exports = api