问题标签 [etherpad]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 使用带有nodeJS的自定义路径将WebSockets和HTTP代理到单独的NodeJS应用程序?
语境
我正在尝试在 NodeJS 中构建一个新的 Web 应用程序。这个 webapp 使用两个主要组件。
1) 我在 NodeJS 中编写的代码——也就是我自己的逻辑流程。
2)使用 HTTP 和 Socket.io的第 3 方开源 NodeJS 应用程序 - EtherCalc
EtherCalc 本身就是一个完全独立的 Web 应用程序。它是一个浏览器+服务器中的电子表格,旨在用作独立应用程序。重要的是,它有自己的命名空间(因为它有各种路径名可以路由到不同的函数)。
我的应用程序和 EtherCalc 各自在各自的端口上独立运行。
为简单起见,让域名为localhost
.
我打算解决的挑战
我的应用程序将使用 EtherCalc 的电子表格功能,以及我自己的代码的非电子表格相关的逻辑流程。用户将可以访问这两个界面。但是,我希望这一切看起来都来自一个 URL/端口——我不希望非程序员指定不同的端口来访问不同的功能。
对我来说解决这个问题的最简单方法是在我的应用程序中为 EtherCalc 创建一个命名空间。任何以/ethercalc/
自动开头的路径都会被转发到运行 EtherCalc 的端口(在ethercalc/
转发之前从请求 URL 中删除)。任何不以此开头的内容都保留在标准服务器逻辑流程中。
我正在使用node-http-proxy
以下代码来实现这一点:
我遇到的问题
最初这似乎运行良好 - 当我转到任何/ethercalc/
url 时,电子表格界面就会加载。但是,EtherCalc 使用 WebSockets 或 JSON Polling 以使服务器和浏览器保持在同一页面上。这似乎无法正常工作。出于某种原因,实际连接起来需要 10 秒的时间。如果我处理过电子表格,然后再次加载它,这尤其成问题 - 在我真正看到我事先输入的数据之前有 10 秒的窗口。
出现此问题后是删除 url 更改功能。现在我的应用程序只是将请求转发到运行 EtherCalc 的端口。但是,问题仍然存在。直接连接到 EtherCalc 所在的端口可以解决问题。
重写代码以使用 node-http-proxy 的httpProxy.createServer()
代码也没有什么不同 - 完全相同的结果......
奇怪的是,当连接到我的应用程序端口(具有代理/转发系统的端口)时,经过漫长的等待期后,它运行良好 - 一切都完全实时同步。
有人知道这是怎么回事吗?
TL;博士
- 我在 NodeJS 中有一个面向 HTTP 端口 80 的网络应用程序。
- 我在 NodeJS 中有一个使用 Socket.IO ( EtherCalc ) 在非公共端口上的同一服务器上运行的第 3 方 Web 应用程序。
- 我想将我自己的 webapp 中的网页和 EtherCalc 中的网页提供到端口 80 上的相同域名。
- 我
node-http-proxy
在我的 webapp 上运行了一个代理 ( ) 来实现这一点。 - 出于某种原因,当我这样做时,在浏览器和 EtherCalc 的服务器之间发生的握手(现在通过代理运行)需要永远。(或者更确切地说是 10 秒,对于面向消费者的网页来说,AKA 是不可接受的)
- 我不知道为什么会这样。
任何线索/提示/建议/线索?Socket.IO 对我来说是全新的——我已经使用 Node 很长一段时间(2 年),但它完全是在 HTTP 世界中。代理对我来说也是新的(这是我第一次使用代理 - 将它用于命名空间/端口问题)。因此,我真的不知道从哪里开始寻找。
apache - 将 Etherpad 安装到子目录中
我设法使用此 Etherpad 安装说明启动并运行 Etherpad 。
它在http://localhost:9000/
我的服务器上运行,并通过反向代理和 SSL 在 Apache 上交付到https://www.example.com/
.
这一切都运行良好,但由于 Etherpad 不是我唯一的应用程序,我希望它通过https://www.example.com/etherpad/
. 我该如何管理?
我试图将ProxyPass
命令更改为
这使它在/etherpad/
目录中可用,但其中的所有资源仍然从/
(根目录)交付。在/etc/etherpad/etherpad.local.properties
配置文件中,我没有找到任何相关设置。
我如何告诉 Etherpad 存在于子目录中?我不能使用另一个子域,因为那里没有 SSL。
apache - 如何在我的网站空间的子目录中安装 Etherpad Lite?
您好,在阅读了大量文档后,我无法弄清楚如何在我的网站空间中正确安装 Etherpad lite,因此可以通过地址“ http://www.domain.com/etherpad/ ”访问它
我的网络服务器是 Apache,我的数据库是 MySQL,我的 Wordpress 目前运行良好。
我创建了一个特定的数据库,但我不确定如何正确配置 Etherpad。有人可以解释一下这是什么程序吗?
我假设我应该在目录中上传 Etherpad Lite 的文件,并且我应该更改 settings.json 中的设置,但除此之外呢?还需要做什么?
仅供参考,我正在尝试使用 participad,这是一个使用 Etherpad 的 Wordpress 插件,但如果没有安装 etherpad,它就无法工作。
node.js - 在 OpenSuse 12.3 上安装 NodeJS 时出现 Python 错误
我正在尝试从源代码在 OpenSuse 12.3 上安装 NodeJS。我需要它才能让 Etherpad-Lite 正常工作。Node.JS 版本 0.8.0 当尝试通过 ./configure 然后 make 然后 make install 安装时,我收到以下错误代码:
如果我使用的是最新版本的 NodeJS,我会收到另一个错误:
希望您能够帮助我。提前致谢 ;)
node.js - 在 OpenSuse 12.3 上第一次启动 etherpad-lite 时出现 npm 错误
希望您能够帮助我。我正在尝试在 OpenSuse 12.3 上安装 etherpad-lite。Etherpad 版本 1.2.11 我也尝试从源代码安装 nodejs,然后运行它,但它不起作用。我现在使用节点版本 0.8.12 和 npm 版本 1.1.63。
我收到以下错误:http: //imageshack.com/i/n1s83nj
谢谢你的帮助 ;)
node.js - 在 Etherpad Lite 中迁移大型 sqlite 数据库的最佳方法
我用 sqlite 运行 Etherpad Lite 已有两年了。现在我将数据库迁移到 MySQL 或 Redis。我bin/migrateDirtyDBtoMySQL.js
以此为灵感编写了自己的小迁移脚本。这里是:
安装 sqlite3 依赖项后它可以工作,但我的 sqlite.db 文件超过 700 MB,并且调用:
以终止信号终止。我如何使用 nodejs 和 etherpad-lite 处理如此庞大的数据库?
database - Etherpad - PostgreSQL 错误:语言“plpgsql”不存在
我安装了 Etherpad lite 并尝试将其与 PostgreSQL 数据库一起使用,但出现此错误:
在其他服务器中,我使用带有 Etherpad 的 PostgreSQL 没有这样的问题。我使用以下命令创建了数据库:
我在 etherpad 中的配置是这样的:
其他一切都保持不变,除了我评论了脏数据库设置。带有脏数据库的 PS 它可以工作。
javascript - 如何使用 Small_List 插件将此列表过滤器添加到 Etherpad-Lite?
问题:我正在尝试将此列表过滤器(可在此处获得,http ://listjs.com/examples )添加到安装了插件“small_list”的 Etherpad-Lite 的主页。这个想法是这个过滤器将过滤主页上列出的所有垫。
我根本不会称自己为程序员,所以请耐心等待!但这些是我为自己解决问题而采取的步骤。我花了过去两天试图弄清楚,所以我希望那里有人会同情我。我假设任何可以帮助我的人都已经在他们的计算机上安装了 node.js,然后你可以从这里获取 etherpad-lite:https ://github.com/ether/etherpad-lite然后在 settings.json文件,取消注释:
此时,您可以输入 cd etherpad-lite/bin/run.sh,它将在 localhost:9001 上运行。转到 localhost:9001/admin 并键入上面的凭据,然后快速安装插件:“small_list”。
插件文件本身位于 etherpad-lite/node_modules/ep_small_list/。据我所知,index.js 以某种方式将 div 导入到位于 etherpad-lite/src/templates/index.html 的应用程序的实际 index html 页面中。
我做了很多不同的事情来尝试让列表过滤器 (list.js) 在 small_list 插件上工作。
目前,我有这个:
我在 index.html 文件上有:
任何帮助将不胜感激!提前致谢。
node.js - Etherpad:连接身份验证的最佳方式
我正在为 etherpad 制作一个插件,用于检查用户是否经过身份验证。如果不是,则显示只读。我做到了这一点:
但我不能使用发布路线来让我自己的用户登录。比如说当我访问 /login 时,我怎样才能获得像一般身份验证这样的请求?
javascript - 在输入时将用户输入文本绘制成指定的颜色
当每个用户输入不同的颜色时,我想实现etherpad UI 效果。我使用 contenteditable div 作为富文本编辑器。
到目前为止我已经尝试过:
1) 在任何输入更改时,在原始文本和更改文本之间进行差异(例如,使用 diff-match-patch)。
2)查看差异子字符串边界,看看它是否位于用户文本内(由几个标签定义)
3) 如果是真的,什么也不做。如果为 false,则在该子字符串旁边插入两个颜色标签,并应用更改调用$(element).html(new_text)
有一个主要问题 - 调用html()
会将插入符号位置重置为零,当您在文本编辑器中工作时这有点糟糕。我试图从 contenteditable div 中提取插入符号位置并使用diff.length
偏移量再次设置它 - 这也不起作用,因为我的 div 中有很多子节点,并且插入符号偏移量是相对于父节点的。
更新:
所以,我可以缩小我的问题范围:
1)我知道如何在 TextNode 元素中获取插入符号的位置
2)我知道如何在 TextNode 元素中设置它(有或没有 Rangy)
3)唯一的问题是如何找出我的插入符号现在在哪个元素上?