qicosmos / cinatra

modern c++(c++20), cross-platform, header-only, easy to use http framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

websocket服务端一些问题

romanholidaypancakes opened this issue · comments

  1. 没有实现ping/pong
  2. 没有实现定时器

有计划加上吗,主要是第二点

定时器是指超时检测吗?

ping pong 是有实现的,不知道你说的没有实现ping pong是怎么测试的。

定时器是指超时检测吗?

定时器可以让用户实现是类似订阅功能,服务端主动一次性向所有客户端下发消息

ping pong 是有实现的,不知道你说的没有实现ping pong是怎么测试的。

我看了源码似乎仅实现了

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;
inline constexpr data_proc_state ws_message = data_proc_state::data_continue;
inline constexpr data_proc_state ws_close = data_proc_state::data_close;
inline constexpr data_proc_state ws_error = data_proc_state::data_error;

应该还有on_ping/on_pong/on_timer, 又或许这个库设计和我看的其他库不一样我没找到吗

on_ping/on_pong 没有开放给用户,server 内部处理了,看有没有必要开放出来给用户。
on_timer 不属于websocket 协议,属于应用层的东西,不过可以讨论一下具体场景和用法。

ping pong 是有实现的,不知道你说的没有实现ping pong是怎么测试的。

我看了源码似乎仅实现了

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;
inline constexpr data_proc_state ws_message = data_proc_state::data_continue;
inline constexpr data_proc_state ws_close = data_proc_state::data_close;
inline constexpr data_proc_state ws_error = data_proc_state::data_error;

应该还有on_ping/on_pong/on_timer, 又或许这个库设计和我看的其他库不一样我没找到吗

你看的其它库是什么库?

ping pong 是有实现的,不知道你说的没有实现ping pong是怎么测试的。

我看了源码似乎仅实现了

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;

inline constexpr data_proc_state ws_open = data_proc_state::data_begin;
inline constexpr data_proc_state ws_message = data_proc_state::data_continue;
inline constexpr data_proc_state ws_close = data_proc_state::data_close;
inline constexpr data_proc_state ws_error = data_proc_state::data_error;

应该还有on_ping/on_pong/on_timer, 又或许这个库设计和我看的其他库不一样我没找到吗

你看的其它库是什么库?

uwebsockets

我使用websocket客户端时,我让服务端退出客户端不会触发on_close回调,使用的是readme示例中的客户端代码,仅在后面加上了

while true{
sleep(10s)
}

以便测试, 这是预期的吗

不符合预期,应该要触发on_close, @helintongh 你有时间先看一下这个问题吧。

收到,周末改

在这个 pr 已经修复该bug。
server目前调用stop函数会向连接了的websocket客户端发送close命令。

websocket服务端还有另外一个问题,即是接受到客户端的ping后没有重置定时器导致客户端断联。pr426 已经修复该bug。

websocket服务端还有另外一个问题,即是接受到客户端的ping后没有重置定时器导致客户端断联。pr426 已经修复该bug。

太好了,就是此BUG让我找到了这里来

用最新的server验证即可。