【问题标题】:node.js with express routing to a new page within socket.ionode.js 快速路由到 socket.io 中的新页面
【发布时间】:2013-01-05 07:47:55
【问题描述】:

我在页面上有一个按钮,当单击它时,我希望页面调用一些 node.js 服务器代码。我通过 socket.io 连接了这个。我遇到的问题是我需要 socket.io 代码根据一些业务逻辑重定向我的网页。不确定通过 express(res.redirect?)实现此目的的最佳方法是什么,以及如何在 socket.io 调用中访问它。任何帮助将不胜感激!

App.js

var dashboard = require('./middleware/dashboard.js');
...
app.get("/dashboard", function (req, res) {
    dashboard.show(req, res);
});
...
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);

io.set('log level',2); // sets socket io log level 0=error, 1=warn, 2=info, 3=debug
...
dashboard.wireUpSocketIO(io);
...

dashboard.js

var savedResponse;

exports.show = function(req, res) {
    savedResponse = res;
    res.render("dashboard.jade"});
};


exports.wireUpSocketIO = function(io){
    io.sockets.on('connection', function (socket) {
        socket.on('dashboardOnButtonClick', function(msg) {

            <biz logic>

             savedResponse.render("someOtherPage.jade", {
                    locals: {
                        title: "someOtherPage",
                        filter: msg.filter
                    }
             });
        });
    });
}

dashboard.jade

button#btnFilter(class='btn btn-info') Test Button

script(src="/socket.io/socket.io.js")
script .
  var socket = io.connect('http://localhost');
  var emitMessage = { blah: false, filter:"n/a"};

  $('#btnFilter').click(function(){
      emitMessage.blah = true;
      emitMessage.filter = "filterByBlah";
      socket.emit('dashboardOnButtonClick', emitMessage);
  });

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    我认为从客户端做起来更容易,也就是javascript:

    1. 服务器端逻辑完成后,您向客户端发送一条消息并将window.location 更改为新的。
    2. 服务器完成后,客户端可以向服务器发出请求,服务器将以 HTTP 301/302 重定向进行响应。这样您就可以针对该 Express 请求调用 res.Redirect。

    问候,

    【讨论】:

    • 网页在客户端渲染新页面安全吗?
    • @KammerLee 我不知道为什么不应该这样做,也许您想详细说明您的担忧?
    猜你喜欢
    • 2019-10-17
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2015-10-27
    • 2013-09-22
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多