index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. var server = require("http").createServer();
  2. module.exports = class WebSocketServer {
  3. constructor() {
  4. this._pageMap = new Map();
  5. this._userIDs = new Map();
  6. this._roomIDS = new Map();
  7. this._users = [];
  8. }
  9. create() {
  10. this.io = require("socket.io")(server, {
  11. path: "/test",
  12. serveClient: false,
  13. // below are engine.IO options
  14. pingInterval: 10000,
  15. pingTimeout: 5000,
  16. cookie: false,
  17. });
  18. server.listen(3000, { origins: "*" });
  19. this.io.on("connection", (socket) => {
  20. let user = socket.handshake.query
  21. this._users.push(user)
  22. this._userIDs.set(user['agentId'], user['agentId']);
  23. socket.join(user['roomId'], () => {
  24. this._roomIDS.set(user['roomId'], user['roomId']);
  25. this.io.to(user['roomId']).emit('vr_request', { userInfo: user });
  26. });
  27. socket.on("getJson", (data) => {
  28. let roomId = this._roomIDS.get(data.roomId);
  29. if (roomId) {
  30. this.io.to(roomId).emit("action", data.content.action);
  31. this.io.to(roomId).emit("vr_response", data);
  32. }
  33. });
  34. console.log("WebSocket服务端建立完毕");
  35. socket.on("disconnect", function (reason) {
  36. console.log("关闭连接", reason);
  37. });
  38. socket.on("error", function (reason) {
  39. console.log("异常关闭", reason)
  40. });
  41. return this;
  42. });
  43. }
  44. close() {
  45. this.server.disconnect(true);
  46. }
  47. };