tremble 5 роки тому
батько
коміт
fd1cb26fbc
4 змінених файлів з 101 додано та 39 видалено
  1. 10 0
      client/index.html
  2. 7 5
      client/index2.html
  3. 68 0
      client/index3.html
  4. 16 34
      server/index.js

+ 10 - 0
client/index.html

@@ -24,26 +24,36 @@
         agentId: 'user_002',
         role:'customer',
         nickName: '测试1',
+        roomId:'001',
         myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg'
       }
     });
 
     socket.on('vr_request', function (data) {
+      alert('vr_request',data)
       console.log(data);
     });
 
     socket.on('action', function (data) {
+      alert('acticon',data)
+
       console.log('--acticon--',data);
     });
 
     socket.on('vr_response', function (data) {
       let res = data
+      alert('vr_response',`${res.customerId}: ${res.content}`)
+
       console.log(`${res.customerId}: ${res.content}`);
     });
+
+
+    
     var send = document.querySelector('#send');
     send.addEventListener('click', function () {
       socket.emit('getJson', {
         customerId:'user_001',
+        roomId:'001',
         agentId: 'user_002',
         nickName: '测试1',
         myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg',

+ 7 - 5
client/index2.html

@@ -22,24 +22,25 @@
         agentId: 'user_001',
         role:'agent',
         nickName: '测试2',
+        roomId:'001',
         myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg'
       }
     });
     socket.on('vr_request', function (data) {
-      console.log(data);
-    });
-
-    socket.on('vr_start', function (data) {
+      alert('vr_request',data)
       console.log(data);
     });
 
     socket.on('action', function (data) {
+      alert('acticon',data)
+
       console.log('--acticon--',data);
     });
-    
 
     socket.on('vr_response', function (data) {
       let res = data
+      alert('vr_response',`${res.customerId}: ${res.content}`)
+
       console.log(`${res.customerId}: ${res.content}`);
     });
     var send = document.querySelector('#send');
@@ -47,6 +48,7 @@
       socket.emit('getJson', {
         agentId: 'user_001',
         customerId:'user_002',
+        roomId:'001',
         nickName: '测试2',
         myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg',
         content:{

+ 68 - 0
client/index3.html

@@ -0,0 +1,68 @@
+<html>
+
+<head>
+  <meta charset='UTF-8'>
+  <title>socket.io客户端</title>
+  <script src="./js/socket.io.js"></script>
+</head>
+
+<body>
+  <button id='send'>发送消息到服务器</button>
+  <div>
+    <h3>服务器响应的消息:</h3>
+    <i id='msg'></i>
+  </div>
+
+  <script>
+
+    
+    // 'http://47.115.43.159:3000'
+    var socket = io('http://47.115.43.159:3000',{
+      path: '/test',
+      query: {
+        customerId: 'user_003',
+        agentId: 'user_004',
+        role:'customer',
+        room:'002',
+        nickName: '测试2',
+        myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg'
+      }
+    });
+
+    socket.on('vr_request', function (data) {
+      alert('vr_request',data)
+      console.log(data);
+    });
+
+    socket.on('action', function (data) {
+      alert('acticon',data)
+
+      console.log('--acticon--',data);
+    });
+
+    socket.on('vr_response', function (data) {
+      let res = data
+      alert('vr_response',`${res.customerId}: ${res.content}`)
+
+      console.log(`${res.customerId}: ${res.content}`);
+    });
+    var send = document.querySelector('#send');
+    send.addEventListener('click', function () {
+      socket.emit('getJson', {
+        customerId:'user_003',
+        agentId: 'user_004',
+        room:'002',
+        nickName: '测试3',
+        myHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg',
+        content:{
+          json:'t1',
+          json1:'t2',
+          json2:'t3',
+          action:'action'
+        }
+      })
+    })
+  </script>
+</body>
+
+</html>

+ 16 - 34
server/index.js

@@ -1,10 +1,12 @@
 var server = require("http").createServer();
 module.exports = class WebSocketServer {
   constructor() {
-    this.connMap = new Map();
     this._pageMap = new Map();
-    this._count = 0;
+    this._userIDs = new Map();
+    this._roomIDS = new Map();
+
     this._users = [];
+
   }
 
   create() {
@@ -20,35 +22,27 @@ module.exports = class WebSocketServer {
     server.listen(3000, { origins: "*" });
 
     this.io.on("connection", (socket) => {
-      this._count = this._count >= this._users.length ? 0 : this._count;
       let user = socket.handshake.query
       this._users.push(user)
-      let userId = user.role === 'customer' ? 'customerId' : 'agentId'
-      let friendId = user.role !== 'customer' ? 'customerId' : 'agentId'
-      this.connMap.set(userId, socket);
-      socket.emit('vr_request', { userInfo: user });
-      this._count++;
+      this._userIDs.set(user['agentId'], user['agentId']);
+
+      socket.join(user['roomId'], () => {
+        this._roomIDS.set(user['roomId'], user['roomId']);
+        this.io.to(user['roomId']).emit('vr_request', { userInfo: user });
+      });
 
-      socket.on("getJson", (data) => {
-        console.log("收到的信息为:" + data);
-        let msg = data;
-        let connTemp = this.connMap.get(friendId);
-        let action = msg.content.action
-        
-        socket.emit("action", action,()=>{
-          console.log(action)
-        });
 
-        !!connTemp && this.sendText(connTemp, msg, (msgSendFinally) => {
-          console.log(msgSendFinally)
-        });
+      socket.on("getJson", (data) => {
+        let roomId = this._roomIDS.get(data.roomId);
+        if (roomId) {
+          this.io.to(roomId).emit("action",  data.content.action);
+          this.io.to(roomId).emit("vr_response", data);
+        }
       });
 
       console.log("WebSocket服务端建立完毕");
 
       socket.on("disconnect", function (reason) {
-        // this.connMap[userId] && (delete this.connMap[userId])
-        // console.log(this.connMap)
         console.log("关闭连接", reason);
       });
       socket.on("error", function (reason) {
@@ -64,16 +58,4 @@ module.exports = class WebSocketServer {
     this.server.disconnect(true);
   }
 
-  sendText(socket, msg, cbOk) {
-    const msgSendFinally = msg;
-    let action = msg.content.action
-
-    socket.emit("action", action,()=>{
-      console.log(action)
-    });
-
-    socket.emit("vr_response", msgSendFinally,()=>{
-      cbOk && cbOk(msgSendFinally);
-    });
-  }
 };