Welcome to the TouchFish wiki!

本页面编辑者:细数繁星、Piaoztsdy,编辑时间:2025/10/05 14:47开始

备用链接

TouchFish 服务端使用指南

v2.0.0 版本中,更新了文件收发功能,会出现兼容性问题。server 也无法完全规避此现象。因此,这里建议各位在主聊天室中,如果无法确定机房中所有人均使用 v2.0.0,禁止文件传输功能

Getting started

最基本的部分 REAMDE 和专栏都有提到,便不再提了。这一次讲更进阶的。

你可以使用参数法启动 server:

1
~/> ./chat <ip> <max_times> <port>

如对于下图的界面,一种启动方法是:

1
~/> ./chat localhost 114514 8080

新版的 TouchFish server 在部署成功后有这个页面:

image

有一些关键信息要注意一下:

  • 当前版本和最新版本,如果想获取更新的功能,可以更新。(最新版本只有在互联网可用的情况下才会显示,否则为 UNKNOWN
  • 与老版本不同的是,日志不再实时显示,而是保存在与执行目录下的 log.txt 中。server 不能直接关闭,需要输入 exit 关闭,否则会丢失日志信息!
  • 想获取最新日志,请输入 flush
  • 本目录下有配置文件 config.json,如果想要加载上次的配置。那么直接在同一目录下运行原来的 server 即可。
  • 本命令行中所有和用户名有关的,若该用户没有发送过信息,则无法获取其用户名,显示为 UNKNOWN
  • 强烈建议大家打开自动移除套接字的功能(v1.3.0 及以后的版本支持),没有这个功能的去官网升级,在

如果你比较聪明,你可以通过 help 命令详细了解每个命令和它们的用法。如果你更加聪明,你会点个 star 然后 clone 源代码直接脑编。

如何禁止文件传输功能

进入命令行控制页面后,输入:

1
ban words [FILE_ ] ="} =="}

如果要永久 ban,请使用:

1
ban forever words [FILE_ ] ="} =="}

下面详细介绍这个命令行页面如何使用:

广播信息

用法:

1
broadcast <msg>

实例:

1
2
3
localhost:8080> broadcast TouchFish yyds
广播成功
localhost:8080>

效果:

image

如果有人不在线,会报告错误(这是可忽略的):

1
2
3
4
localhost:8080> broadcast TouchFish yyds
向用户 ('127.0.0.1', 57807) (用户名 细数繁星) 广播失败。
广播成功
localhost:8080>

房主准许后方可进入

该功能需要此命令来开启:

1
set EAP on

EAPEnter After Promitting 的缩写,当然这不重要

如果你希望在每一次加载时都默认需要准许才能加入,则输入:

1
set forever EAP on

关闭亦然,on 改成 off

在该功能启动时,新加入的客户端上会显示:

image

而在 server 上会显示:

1
<Rid> 用户 (IP, 这啥玩意我也不知道) 申请加入聊天室,请处理。

Rid 是一个用户申请加入聊天室的请求编号。比如刚刚的实例中会显示:

1
<0> 用户 ('127.0.0.1', 58053) 申请加入聊天室,请处理。

如果准许多个编号为 <rid_i> 的请求,那么请输入:

1
accept rid1 rid2 rid3 ...

刚刚的实例中需要输入:

1
accept 0

如果拒绝多个编号为 rid_i 的请求,那么请输入:

1
reject rid1 rid2 rid3 ...

会显示提示(懒得抄了)

准许后客户端显示:

image

拒绝后客户端显示:

image

自动移除离线的套接字

因为 server 实现极为粗暴,连接上一个套接字直接塞列表里。这就导致在长时间挂机运行以后 server 会出现高荷载的问题。

因此在 v1.3.0 版本中,我们引入了自动删除离线套接字的功能。

这个功能及其重要,强烈建议部署者们在启动 server 后立即开启。

使用方法:

1
set ARO on/off (forever)

ARO 为 Auto Remove Offline 的缩写。

拉黑和解除拉黑 ip

我看很多人对这个很期待,保守估计有 7 个人曾提过添加这个功能的想法。

如果你想看用户的具体信息,以便了解是否拉黑,请转到

这个命令还是很简单的:

1
ban ip <ip1> <ip2> <ip3> ...

实例:

如果想永久拉黑:

1
ban forever ip <ip1> <ip2> <ip3> ...

解禁和永久解禁同理,把 ban 改成 enable 即可。

添加屏蔽词和解除屏蔽词

用法:

1
ban words <w1> <w2> <w3> ...

如:

1
ban words sb tmd

你可以在 words 前面加上 forever,以永久添加屏蔽词。

解禁和永久解禁同理,把 ban 改成 enable 即可。

限制消息长度

用法:

1
ban length <len>

如:

1
ban length 114

你可以在 length 前面加上 forever,以永久限制消息长度。

这个没法解禁(默认值是 21474836472147483647)。

用户加入提醒房主

1
set SEM on

即可,想关掉就 on 改成 off

如果想永久设置,最后面加个 forever

查询用户具体信息

这个命令用起来就有点复杂了。

搜索 IP 为 的用户

输入:

1
search ip <ip>

需要注意的是,多个 IP 相同的套接字只显示最后一个链接的

搜索用户可以匹配正则串 <user> 的用户

没错,这个命令,它支持正则。

输入:

1
search user <user>

搜索所有在线用户

1
search online

搜索所有离线用户

1
search offline

注意 server 不是轮询的,所以只有在发送信息或广播后才能确定一个用户是在线还是离线的

搜索所有封禁用户

1
search banned

搜索所有发送信息次数大于 <times> 的用户,并以发送信息次数为关键词降序排序输出

1
search send_times <times>

缓冲日志

1
flush

输出格式为(实例)

1
2
3
IP         USERNAME    IS_ONLINE    IS_BANNED      SEND_TIMES
--------- ---------- ----------- ----------- ------------
127.0.0.1 UNKNOWN True False 0

实用功能

执行命令

1
cmd <cmd>

可以在Server中快速执行系统命令,免得再开一个命令行 (或者没法再开命令行)

功能妙用

因为新版chat会把日志和消息输出到log里面,查看不方便,就可以用这个命令:

1
cmd cat log.txt # Linux(类Unix)端
1
cmd type log.txt # Windows端

有没看懂或者 bug 直接找我,最好提 Issue

留言

⬆︎TOP