作者laechan (小太保)
看板mud
标题Re: [闲聊] tmi2-mudlib 的更改
时间Wed Jun 11 22:33:57 2014
提一下 intermud 的替代方案构想,以底下四个函数为主:
socket_create
socket_connect
socket_write
socket_close
首先弄一台 server 出来,所有 tmi2_v3_改 的站,都可以透过
server 的管理者,提出远端频道互连的申请。
接着,假设有 A, B, C 三个 tmi2_v3_改 的站。
当 A 站以远端频道的指令,发送出一个讯息时
sent_msg_to_remote_server(msg);
远端 server 收到该讯息後,就会将这个讯息同时送给 A, B, C
三个站的接收讯息物件,由这个物件进行讯息的广播,达到从 A
站发送远端讯息,A、B、C 三站都能接收到讯息的目的,而且..
一、可决定是否接收从某一站过来的讯息或是全部不接收
二、各站可决定是要让 wiz 或是让全部玩家皆可发送讯息
三、也可决定是只要让 wiz 或是让全部玩家皆可接收讯息
(我一般是希望只有 wiz 之间、甚至只有架站者之间可以)
四、sanc 目前的主机(可信任的 ip 来源)就可当 server
└而且也不一定要 sanc 当 server
五、假设 A 站还有另一个同样以 tmi2_v3_改 架出来的 A2 站,
A2 站亦可向 server 提出公频互通申请。
六、理论上 server 端可依各站提出的申请需求,决定自己站发
送出来的讯息,是要全部都能接收到,还是只有一部份可
七、讯息理论上可支援各站自订的 semote
八、讯息是可被各站自行 log 的
九、使用远端频道互通前要向 server 端提出申请,申请时得附
上是哪一个 mud 站(ip + port)要送收讯息。
目前有些缺点,就是送出去的讯息,跟各站实际接收到的讯息可
能会有一些落差,某些特殊字元需再经过特殊处理这样;另外就
是讯息的传送也会有一些些的 delay 这样(大概最长 1 秒多)。
优点就是架构简单,未来释出的 tmi2_v3_改 就会内建这样的东
西,程式段会包在 channeld.c 里头并在 /include/intermud.h
宣告一些定义,远端公频指令预设为 tmi2(亦可自订),下次释出
的版本就会有。
不晓得大家的意见如何?
laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.75.253
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud/M.1402497240.A.757.html
1F:推 happyhero :这样感觉很酷 可以直接线上交流意见 49.158.118.57 06/11 22:44
这是源自你提出的想法,而我觉得这是 tmi2_v3_改 也应纳入的
东西。
预计最快星期五释出这个版本,并暂时以我的 PC 当 server。
(前提是它当 server 可 work,若不行就不在下次释出)
※ 编辑: laechan (61.224.75.253), 06/11/2014 22:50:03
2F:推 yukang :直接实作 irc protocol 就可以了 74.207.250.203 06/12 10:49
http://imgur.com/ExDbzQA.jpg
上图是以 sanc 主机当 server 的例子,tmi2_v3_改 的三个
主要档案是
/adm/daemons/channeld.c
/adm/daemons/logind.c
/include/tmi2_v3_channel.h
然後我在我自己的 PC 上跑两份 mudos,它们共同使用 lib/
目录只是 name 及 port 不同,一个是 5000 一个是 6000。
然後当我从 port 5000 那边下 tmi2 test 的远端交谈指令时
,讯息会先传到 sanc 主机端,sanc 主机端再将讯息传送给
所有已注册的 tmi2_v3_改 的 mud,以目前来说有注册的就是
架在我 PC 上的 port 5000 及 port 6000 两个 mud,於是这
两个 mud 在接收到从 server 端传来的讯息後,就会将讯息
显示出来。
它的架构很简单,原因是因为用了偷吃步的做法,但基本上这
样做是绝对可以的,因为讯息必须先传到 server 端,server
端才把讯息送给各 tmi2_v3_改 mud,然後各 mud 亦可透过简
易的修改,来决定要不要接收讯息、以及要限制只有谁才能接
收讯息。
※ 编辑: laechan (210.61.157.53), 06/12/2014 12:20:17