这是什么
这是一个简单的工具,暂时我把称作pad,你可以在pad上编辑自己的文字或者笔记,顶部的工具栏可以让你轻松地让你的文字在排版上更加美观。那么。。这和普通的文本编辑器有什么区别呢?玄机在于你可以将你正在编辑的文档分享出去,也就是把浏览器中的url发送给你的朋友,最后面的一串字符是该份文档的id,当你们同时对这一份文档进行编辑的时候,你们互相可以实时的看到对方的操作,类似于文字直播的感觉。你可以对伙伴写文字进行内容或者样式上的修改。总之,这是一个好玩的东西。
这是怎么做到的
核心原理是运用websocket进行通信,将每一个人对文档的改动广播到链接这份文档的每一个浏览器。后端是完全采用php来编写的,用swoole扩展提供websocket服务,然后用redis和mongodb进行内容的存储和分发。
代码
因为这个项目并不需要特别大的框架来支持,我选用了slim框架来协助完成,这是一个很微小,同时很厉害的框架,框架的中文文档也很简洁,Slim中文文档;框架的作者有一本讲php的书,叫做《modern php》,如果你用php的话,可以看看。所有的代码开源在github上,如果你也想在自己的服务器或者你本地进行搭建,你要安装php的swoole扩展和mongodb扩展,当然,你也必须拥有redis和mongodb的环境才行。这是github仓库的地址,real-time-pad,如果你有好的想法可以告诉我,如果你愿意给我一个star那就更好了?
使用
你可以随意修改这份文档,但是所有的修改都不会被保存,如果你想体验一下,可以点击这里,一个可以玩耍的pad,在这里你可以随便写些什么,然后把链接发送给别人,体会一下乐趣。?我的设想是:你可以创建属于自己的pad,然后分享给你的朋友们。但是暂时只有一个有效的pad,每个人都可以去访问,去修改。
安装
在确保环境都已安排妥善的情况下,你只需要去github上下载或clone代码,然后运行:
composer install
然后开启socket服务,cd到你的代码根目录,运行
php socket.php
因为这个项目暂时并不复杂,所有我现在直接把一些服务器的配置写在了相应类的代码中,包括socket监听的端口号,redis的host和端口号。
更新日志
2017.1.21 完成最基本的功能2017.1.22 配置文件分离 方便部署