FreeIM icon indicating copy to clipboard operation
FreeIM copied to clipboard

是否考虑添踢客户端下线方法呢

Open Tim1104 opened this issue 6 years ago • 10 comments

就想再API端踢人下线。 Android 当APP 运行再后台的时候网络会断开。当APP 运行到前台来的时候怎么自动重连 老大求解

Tim1104 avatar Oct 19 '19 13:10 Tim1104

断开了后重新连接一次

2881099 avatar Oct 19 '19 14:10 2881099

这个在客户端做?

2881099 avatar Oct 19 '19 14:10 2881099

怎么踢人下线

Tim1104 avatar Oct 19 '19 14:10 Tim1104

API端

Tim1104 avatar Oct 19 '19 14:10 Tim1104

https://github.com/2881099/im/blob/master/ImCore/ImServer.cs 看看94行,112行代码

94行是上线,112行是下线

2881099 avatar Oct 19 '19 14:10 2881099

你是要告知他们下线了,还是自己下线。

如果自己下线,断开websocket链接即可。

如果告知他们,我下线了,应该用用户状态表示,判断用户是否在线:imcore为上线,并且用户状态是a。当切换为后台运行的时候,把用户状态改为b,当切换进来的时候,把用户状态改为a。改变用户状态就是提交一个webapi接口。

2881099 avatar Oct 19 '19 14:10 2881099

我的想法是ImHelper 里面是否可以强制让client 下线。然后就可以触发下线事件

Tim1104 avatar Oct 19 '19 15:10 Tim1104

我看了一下,ImHelper 如果想实现物理将他人踢下线,其实也是一个 SendMessage 的过程。

如: ImHelper.SendMessage(目标用户, "SYS_DOWN") ImServer 内处理一下该消息,当收到 SYS_DOWN 消息时,将 socket 关闭。https://github.com/2881099/im/blob/master/ImCore/ImServer.cs 142 行代码

缺点:安全性需要加强,防止任何用户都能发送该消息。

这块代码我就不扩展了,提供上述解决思路,可以下载源码修改尝试。

2881099 avatar Oct 19 '19 15:10 2881099

感谢你的回复。我打算用在我的生产应用上面。不知道你有没有用在商业环境上面。是否可以你的微信或者qq 。我的微信 18938792061

Tim1104 avatar Oct 20 '19 03:10 Tim1104

有,这套用几年,在多个项目上

2881099 avatar Oct 20 '19 03:10 2881099