Tag: etherpad

Etherpad:最好的方法来挂钩到auth

我正在做一个etherpad插件,检查用户是否通过身份validation。 如果不是,则显示只读。 我得到了这个: var eejs = require('ep_etherpad-lite/node/eejs'); var readOnlyManager = require("ep_etherpad-lite/node/db/ReadOnlyManager"); exports.route = function(hook_name, args, cb){ args.app.get('/p/:pad', function(req, res){ if(req.params.pad.indexOf('r.') === 0){ res.send(eejs.require("ep_etherpad-lite/templates/pad.html", {req: req})); } else { if(req.session.user){ res.send(eejs.require("ep_etherpad-lite/templates/pad.html", {req: req})); } else { readOnlyManager.getReadOnlyId(req.params.pad, function(err, readonlyID){ res.redirect('/p/'+readonlyID); }); } } }); } exports.logout = function(hook_name, args, cb){ args.app.get('/logout', function(req, res){ req.session.destroy(function(){ res.redirect('/'); }); […]

Node.js:使用快速路由进行url重写以代理etherpad

我的第一个问题在stackoverflow;)。 我想做的事情是:我想使用快速path“/ pad / *”来显示etherpad(etherpad lite),并操作用户将看到的内容。 所以,如果我得到“/ pad / p / something”,那么“something”将被处理,并相应地改变为真实ID,例如“XYZ”。 所以用户可以编辑正确的键盘。 然而,etherpad需要大量的静态东西和websocket,因此我想代理它,并操纵身份证,如果我需要 最小的工作示例:当然,ID变化的真正逻辑要复杂得多,但对于最小工作示例,我只是使用每个padID映射到“a”的逻辑。 我想出了这个: /* packages */ var express = require( "express" ); var http = require( "http" ); var httpProxy = require('http-proxy'); /* app */ var app = express(); app.use(app.router); /* some express logic */ app.get( '/' , function( req , res […]

Etherpad的时间线function如何工作?

我想了解Etherpad的时间线function如何工作。 如果你不知道这里的etherpad软件是它的实现 – http://piratepad.net/ 做一些编辑,写一些东西,大胆地使用编辑器,然后在右上angular你会看到时间表。 点击并播放它。 我可以看到像这样的JSON响应 – 但任何人都可以把它分解成一些可理解的东西。 这是从它的Node.js端口的一段代码 – https://github.com/Pita/etherpad-lite/blob/master/src/node/handler/TimesliderMessageHandler.js#L359 我非常有兴趣了解JSON响应及其工作原理。 另外什么数据库是最适合这种应用程序(etherpad,谷歌文档等)。 Nosql(如mongodb)或sql(如mysql)。

如何在Express 4中正确设置链接预取标题?

根据MDN ,正确的方法是发送标题: Link: </images/big.jpeg>; rel=prefetch 所以我的expression语法是: res.header('Link', '</images/big.jpeg>; rel=prefetch'); 我看到它在我的浏览器中出现: Link:</images/big.jpeg>; rel=prefetch 但铬永远不会尝试下载图像..元和链接方法工作正常.. 我是否设置标题错误或浏览器无法处理标题值? UDPATE:好吧,看起来我正在做的事情,但Linux / Ubuntu上的Chrome 43和Chromium 43目前还不支持。 这在Firefox 38中工作正常 难道Chromium只是没有在networking标签中显示预取? 更新2:所以它看起来像Chrome / Chromium隐藏从networking选项卡的文件传输。 如果有人可以证实这一点,我会很感激。

Etherpad Lite传输整个文件还是只传输差异?

当处理非常大的文档时,它是否基本上压倒了连接,并停止或成功pipe理使用差异?

使用nodeJS的自定义path代理WebSockets和HTTP到单独的NodeJS应用程序?

CONTEXT 我正在尝试在NodeJS中构build一个新的Web应用程序。 这个webapp使用两个主要组件。 1)我在NodeJS中编写的代码 – 也就是我自己的逻辑stream程。 2)第三方开源NodeJS应用程序 – EtherCalc – 同时使用HTTP和Socket.io EtherCalc是一个完全独立的Web应用程序。 这是一个电子表格在浏览器+服务器,旨在作为一个独立的应用程序使用。 重要的是,它有自己的命名空间(就像它有不同的path名称,可以路由到不同的function)。 我的应用程序和EtherCalc各自运行在彼此独立的端口上。 为了简单起见,让域名为localhost 。 挑战我想要解决 我的应用程序将使用EtherCalc的电子表格function,以及我自己的代码的非电子表格相关的逻辑stream程。 用户将有权访问这两个接口。 不过,我想这一切似乎来自一个URL /端口 – 我不希望非程序员指定不同的端口来访问不同的function。 解决这个问题的最简单的方法是在我的应用程序中为EtherCalc创build一个名称空间。 以/ethercalc/自动开始的任何path将被转发到运行EtherCalc的端口(在转发之前, ethercalc/从请求URL中删除)。 任何不以标准服务器逻辑stream程开始的东西。 我使用node-http-proxy来实现这一点,使用下面的代码: proxy.proxyRequest(req,res,{ host:'localhost', port:8000 }); 我遇到了问题 这似乎最初运行良好 – 电子表格界面加载时,我去任何/ethercalc/url。 但是,EtherCalc使用WebSockets或JSON轮询来保持服务器和浏览器在同一页面上。 这似乎没有正常工作。 出于某种原因,实际上需要10秒钟才能完成连接。 如果我在电子表格上工作,然后再加载它,这是特别有问题的 – 在我实际看到事先放入的数据之前,有10秒的窗口。 有这个问题之后,要删除url更改function。 现在我的应用程序只是将请求转发到EtherCalc正在运行的端口。 但是,问题依然存在。 直接连接到EtherCalc所在的端口可以解决问题。 重写代码来使用node-http-proxy的httpProxy.createServer()代码也没有什么区别 – 完全相同的结果… 奇怪的是,当连接到我的应用程序端口(具有代理/转发系统的应用程序端口)之后,在漫长的等待期之后,它的function就很好 – 所有事情都是实时同步的。 有谁知道这是怎么回事? TL; […]

错误:EPERM,Node.js和Etherpad Lite不允许的操作

我试图让我的计算机上运行IIS的Etherpad精简版网站,然后将其上传到Azure Web站点,但是当我尝试( http://pastebin.com/4rZWbqix )时出现此错误: iisnode处理请求时遇到错误。 HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误 您正在接收此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabledconfiguration设置为“true”。 除了node.exe进程的stdout和stderr的日志之外,还可以考虑使用debugging和ETW跟踪来进一步诊断问题。 node.exe进程生成的stdout和stderr输出的最后64k如下所示:fs.js:520 return binding.lstat(pathModule._makeLong(path)); ^ Error: EPERM, operation not permitted 'C:\Users\Matthew' at Object.fs.lstatSync (fs.js:520:18) at Object.realpathSync (fs.js:1047:21) at tryFile (module.js:142:15) at Function.Module._findPath (module.js:181:18) at Function.Module._resolveFilename (module.js:336:25) at Function.Module._load (module.js:280:25) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9) 在Etherpad的目录中没有fs.js文件,所以我认为它是Node.js的一部分有问题。 我是新的Node.js,所以任何帮助,将不胜感激。 编辑1:我目前正在寻找Azure的替代品,并授予C:\ Users \ Matthew的权限。 但是,有可能以某种方式修改fs.js,把一个try / catch围绕binding.lstat? 编辑2:玩了一下之后(添加权限工作!),我已经得到它的工作。 […]