笔者已改为使用 IRC,IRC 也有 webirc 之类的 websocket 实现,所以这个项目就有点显得鸡肋了
hack.chat 是什么
hack.chat is a minimal, distraction-free, accountless, logless, disappearing chat service which is easily deployable as your own service.
hack.chat 是一个极简的,分发自由,无账户,无日志,易失的,易部署的聊天服务。
The current client comes bundled with LaTeX rendering provided by KaTeX and code syntax highlighting provided by highlight.js.
现版本的客户端使用了 KaTeX 提供的 LaTex 渲染和 highlight.js 提供的代码语法高亮
简单来说,就是一个 web 聊天室, WTFPL 开源。服务端不存储任何有状态记录,消息只分发给同一时刻连接到同一个 websocket 池的客户端。不支持端对端加密。
常用指令
/whispher <someone> [text] # 发送指定用户可见的消息
/stats # 查看服务器信息
/move <chanel> # 不刷新页面移动到新频道,只会改变自己的状态,且浏览器上方的 url 不会变。可能引起混淆,尽量少用。
聊天
支持大部分常用的 Markdown 语法,支持 Latex 公式。
不能直接显示图片。(虽然配置里有个 imgur 选项,不知道怎么用)
shift+Enter 消息换行。
侧边栏
鼠标移到页面右侧边缘,会弹出一个侧边栏,提供的选项有
- 改变主题
- 开启通知(桌面通知或声音)
- 邀请用户进入另一个随机产生的频道
部署
1. 安装 nodejs 和 npm
2. git clone https://github.com/hack-chat/main
3. cd main && npm install
会要求输入盐值,管理员用户名密码,websocket 监听端口
管理员登录方式是在进入聊天室时,使用 <admin_user>#<admin_password>,如 lindsay#123456
4. npm start
启动了两个应用,一个监听在 3000 端口,提供前端服务,一个监听在 install 时配置的端口。
5. 修改前端 websocket 路径配置
在 client/client.js 找到
var wsPath = ‘:6060’;
这一行。
这里的值修改成想要的, 不一定是在第 3 步中设置的端口。
以 https://chat.koi.moe 为例,在 nginx 中设置了
location /ws {
proxy_pass http://127.0.0.1:6060
}
那么这里的值就改成
var wsPath = ‘/ws’;
6. nginx 配置
upstream websocket {
server 127.0.0.1:6060;
}
server {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
server_name chat.koi.moe;
ssl_certificate <path_to_cert>;
ssl_certificate_key <path_to_key;
#client_max_body_size 0;
location / {
# proxy_pass http://127.0.0.1:3000/; # 二选一
root <project_location>/client;
}
# 下面这条可选,相应 client.js 文件会不一样,请自行斟酌。
location /ws {
rewrite ^/ws / break;
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
在 location / 中,可以转到 3000 端口,也可以直接指向项目的静态目录。
个人觉得后者执行效率更高。
7. 启动
npm start
8. 其他
可以在 client.js 文件中找到
var frontpage = [ ….. ]
可更改首页描述,这里的 Markdown 语法解析跟聊天室消息的解析一样
诸如域名解析一类的东西就不赘述了