比如哈,用 tcp 写个 a/b 双方自定义的对话, a:你好我是 a ,我 xxx,我公钥是 b:收到,根据你的公钥,我的公钥是 a:根据你的公钥,收到 ... 有些对话会好几个回合,定义一个对话写一个 func ,会比较乱,而且对话类多了也不好改。 小白请问大佬们通常是如何解决这类问题的?是否有一些名词 术语 或者建议之类的我去查查。大概是这么个意思,也不知道问的对不对,铁子们别喷哈
1
6IbA2bj5ip3tK49j 2023-07-01 21:15:51 +08:00 via iPhone
TLV ?
|
2
Nazz 2023-07-01 21:25:29 +08:00 via Android
直接 websocket
|
3
raw0xff OP |
4
Nazz 2023-07-01 22:02:37 +08:00 via Android
看看标准库 tls 是怎么交换密钥的
|
5
raw0xff OP @Nazz 感谢大佬,大概看了下好像也是 if return 套的,我一直以为 if 一层层套下去会比较初级,想看看有没有进阶的写法。
|
6
oott123 2023-07-01 23:03:08 +08:00 via Android
状态机
|
7
DefoliationM 2023-07-02 02:30:57 +08:00
自带 ecdh ,直接拿来用就是了。
|
8
nifury 2023-07-02 10:21:49 +08:00
不确定我有没有理解正确,不过在有协程的语言上挺直观的吧,应该只需要一个 func ?
send message 1 recv assert message 1 from b send messge 2 recv assert message 2 from b 一直这样下去 ws 的 onmessage 这种形式的话最多也就改成基于 counter 的 switch case ?每次收到一条消息就 count+1 |
9
iceheart 2023-07-02 11:02:47 +08:00 via Android
异步的就是用状态控制握手进程;
同步就是 send,recv,send,recv... |
10
chenjia404 2023-07-02 15:25:44 +08:00 via Android
定义一个消息格式,其中有一个类型字段,不同类型消息分别处理。
|
11
flyqie 2023-07-02 17:18:08 +08:00
任何语言都能用状态机。。
|
12
raw0xff OP @oott123 @DefoliationM 感谢,我去查查。
@nifury 每次 onmessage 的时候都是处理当前的一条消息,不同用户不同 api 就没法儿用 count+1 了吧 @iceheart 哪里能找到的典型的写法例子? |
13
hzzhzzdogee 2023-07-02 20:52:41 +08:00
你问的啥, 没看懂.
如果是如何处理连续消息, 定义 seq id 这种序列号 |
14
dayeye2006199 2023-07-03 01:20:05 +08:00
状态机+1
|
15
yuan1028 2023-07-03 11:25:04 +08:00
相当于自己新写一个协议?直接参考 HTTP 就完事了哈哈哈
|