使用node.js时重写URL参数并在没有重定向的情况下表达

时间:2017-04-16 00:46:36

标签: javascript node.js express websocket

我使用node.js,express和sockets.io来:

  1. 确定用户到达(工作)时是否包含特定的网址参数
  2. 如果没有,请创建一个新的随机房间ID并将用户加入该房间(正常工作)
  3. 修改浏览器的地址栏以反映新的网址,而不重定向浏览器(如果可能,不确定或如何完成)
  4. 首先,我不知道在不违反DOM安全性的情况下是否可行。如果是的话,我想了解我是如何做到的。

    如果不可能,和/或如果我需要使用重定向,您是否可以在项目#1和#2的工作环境中向我展示如何在我已经工作的代码中执行此操作?

    var express = require('express');
    var app = express();
    var server = require('http').createServer(app);
    var io = require('socket.io')(server);
    var url = require('url');
    
    app.use(express.static(__dirname + '/node_modules'));
    
    app.get('/', function(req, res, next) {
      res.sendFile(__dirname + '/index.html');
      var roomID = req.query.me;
        if (roomID == null || !io.sockets.adapter.rooms[roomID]) {
          console.log("URL room variable is: " + roomID);
          console.log('New room!');
          roomID = Math.random().toString(36).substring(2, 13);
          joinRoom(roomID);
          console.log("+ you just joined new room: " + roomID);
        } else {
          joinRoom(roomID);
          console.log("URL room variable is: " + roomID);
          console.log("= you just joined existing room: " + roomID);
        }
    });
    
    function joinRoom(roomID) {
      io.on('connection', function(socket) {
        socket.join(roomID);
        io.sockets.in(roomID).emit('connectToRoom', "Joined room: http://localhost:3030/?me=" + roomID);
      });
      return;
    }
    
    server.listen(3030);
    

    我没有任何示例代码用于我想要完成的部分,因为我根本不知道应该从哪里开始。所以我会欣赏任何方向(重定向?双关语)。

    谢谢!

0 个答案:

没有答案