小编cof*_*uts的帖子

如何在节点js eventemitter中正确删除事件侦听器

我有一个GET和POST路由的设置,想法是POST到路由触发事件,GET路由是服务器发送的事件流,每次触发POSTed事件时触发...但是,我我觉得我做错了,因为事件听众似乎经常被添加,尽管只有一个事件流订阅者......我做错了什么?

var events = require('events'),
EventEmitter = events.EventEmitter,
rr = new EventEmitter();

app.post('/api/:boardname/remoterefresh', function(req, res){
    var boardname = req.param('boardname'),
    data = new Date().getTime();
    rr.emit("refresh-"+boardname, data)
    res.json({data: data})
});

app.get('/api/:boardname/remoterefresh', function(req, res){
    var boardname = req.param('boardname')

    rr.on("refresh-"+boardname, function(data){
        setTimeout(function(){
            res.write('data: '+data+'\n\n');
        }, 1000)
    });

    req.socket.setTimeout(Infinity);

    res.writeHead(200, {
        'Content-Type': 'text/event-stream',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive'
    });

    res.write('\n');

    req.on('close', function(){
        console.log('closed')
        rr.removeListener("refresh-"+boardname, function(){
            //
        })
    })

})
Run Code Online (Sandbox Code Playgroud)

javascript event-stream node.js express eventemitter

29
推荐指数
2
解决办法
4万
查看次数

如何使用 PHP 从 SFTP 服务器下载文件

我希望允许用户直接从 sftp 服务器下载文件,但在浏览器中。

我找到了读取文件并回显字符串的方法(使用 ssh2.sftp 或 phpseclib 连接),但我需要下载,而不是读取。

另外,我看到的解决方案建议从 sftp 服务器下载到 Web 服务器,然后使用 readfile() 从 Web 服务器到用户的本地磁盘。但这意味着两次文件传输,如果文件很大,我想这会很慢。

可以直接从sftp下载到用户磁盘吗?

为任何回应干杯!

php sftp download phpseclib

3
推荐指数
1
解决办法
6340
查看次数

每次渲染或渲染时触发jquery事件

我需要在每个ember.js视图渲染后运行一个函数.我最初的想法是在页面准备好后运行我的函数,但任何视图更改都不受我的函数中DOM操作的影响.有没有一种方法可以在每次渲染视图或重新渲染视图时绑定到事件(或导致触发器)?

javascript jquery triggers bind ember.js

3
推荐指数
1
解决办法
1115
查看次数