![](/img/trans.png)
[英]How can I render a static HTML file with Handlebars on a Nodejs server?
[英]How to change the current static html file to another html file in Nodejs ?
我正在尝试让我的nodejs脚本更改触发某些socket.io时显示的html文件,请参见下面的脚本
var app = require('express')();
var server = require('http').createServer(app);
var bin = "casperjs";
var args = ['server.js'];
var io = require('socket.io').listen(server);
server.listen(process.env.PORT);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/index.html');
});
io.sockets.on('connection', function (socket) {
console.log("socket connection incoming");
socket.on('dout', function () {
var spawn = require('child_process').spawn,
child = spawn(bin, args);
child.stdin.setEncoding = 'utf-8';
socket.on('trout', function(data){
child.stdin.write(data.message + '\n');
//child.stdout.pipe(process.stdout);
child.stdout.on('data', function (data) {
console.log(' ' + data);
});
socket.on('mout', function() {
console.log('communicatio\n');
/*
trying to change the html file displayed
to account.html from index.html
i have tried this with no success
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/index.html');
});
*/
});
});
// console.log(child.stdout);
//console.log(child.stdout.pipe(write.stdout));
});
});
这就是我想要去上班的
socket.on('mout', function() {
console.log('communicatio\n');
/*
trying to change the html file displayed
to account.html from index.html
i have tried this with no success
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/index.html');
});
*/
谁能帮助我正确地做到这一点
Socket.io事件发生在Express应用程序的传统请求/响应生命周期之外。 一旦用户加载了您的初始路线,快速路线将仅由其他请求触发。 您应该通过socket.io的on
并emit
方法。
类似于以下psuedocode的东西应该可以工作:
服务器
socket.on('mout', function() {
// this may be a little heavy handed
// ideally you are only updating small parts of the page as they change
// or notifying the client that they need to make an additional request ajaxically
fs.readFile('__dirname + '/client/index.html', 'utf8', function (err, content) {
if (err) return;
socket.emit('pageUpdate', function () {
content: content
});
});
});
客户:
// when the pageUpdate event is fired,
// change the body content of the response
socket.on('pageUpdate', function (content) {
$('body').html($('body', content));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.