作者typers (Typer)
看板mud
标题[心得] mud 网页连线的开发 (以es2系统为范例)
时间Fri Dec 14 00:20:01 2018
由於现在运行中的 mudlib 不方便公开 source code
所以我拿 es2 v1.3b 的 mudlib 来做 demo
完整的 source code 放在 github 上面, 网址是
https://github.com/jrealm/fluffos-web-es2
搭配使用的 mudos 是我修改过的 fluffos, 一样也是放在 github, 网址如下
https://github.com/jrealm/fluffos
网页连线主要是透过 websocket (以下简称 ws) 运作的
以下是 mudlib 修改的简单说明:
/adm/etc/es2.conf
es2 的主要设定档
需要开启 ws port (这边我使用的是 4001 port)
/adm/obj/master.c
理论上这个档案应该是不需要修改的
但 es2 在 connect() 里面加上了 port 的判断
只能也加上 4001 port, 否则会无法连线
/adm/obj/simul_efun.c
1. 增加 base64_encode(), sha1(), trim() 三个 sefun
进行 ws handshake 步骤时会用到
2. 覆写 query_ip_name(), query_ip_number() 两个 efun
用来取得 ws client 端的连线 ip
/obj/login.c
1. 修改 logon()
ws 连线需要多一道 handshake 的手续, 完成後才能开始登入程序
2. 新增 process_input()
处理 ws handshake 手续
这个 function 是整个 ws 连线的精华, 有兴趣的板友可以参考
https://en.wikipedia.org/wiki/WebSocket 的 "Protocol handshake"
基本上 es2 系列的 mudlib 只要修改上述几个档案
再配合使用 fluffos 2.2x 作为 mudos
就可以提供 web 介面的连线方式
live demo 的网址是
https://demo-es2.muds.me/
之後有机会再跟大家分享
1. 浏览器使用的 html/js/css (有兴趣的可以先自行查看网页原始码)
2. web server 的设定
3. mud 在 web 介面上的延伸功能, 如即时地图/角色状态监控...等功能
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.168.68.192
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud/M.1544718006.A.0BE.html
1F:推 allubatwo : 感谢分享! 114.35.142.216 12/14 12:50
2F:推 neca : M起来 85.7.235.101 12/14 20:10
3F:推 laechan : 推推122.117.106.224 12/14 21:02
4F:推 anfernee5000: 推180.217.176.216 12/15 11:27
5F:推 onei : M一波!! 36.237.147.181 12/15 16:01
6F:推 dontpkme : 应该不会用到了但是谢谢分享114.136.107.113 12/15 17:31
7F:推 quartz031 : 还以为ES2回来了,玩了有满足感 36.238.129.93 12/17 23:05
8F:→ typers : 可惜网路上找不到完整版的src 36.235.36.175 12/18 16:06
9F:→ kruz : 机器还在只是有没有人要拿而已吧 XD 24.6.220.133 12/21 04:50
10F:→ typers : 有src我就可以架给大家回味 125.230.23.154 12/21 09:22
11F:推 jameslong : 感谢分享 110.50.136.11 12/26 14:18