Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用套接字检测客户端断开连接?_Java_Php_Sockets_Tcp_Websocket - Fatal编程技术网

Java 如何使用套接字检测客户端断开连接?

Java 如何使用套接字检测客户端断开连接?,java,php,sockets,tcp,websocket,Java,Php,Sockets,Tcp,Websocket,目标 我正在使用套接字实现一个带有聊天轮盘赌功能的即时消息应用程序。 如果两个客户正在通话,而其中一个断开了连接,那么另一个客户需要知道。 断开连接包括正常断开连接和不正常断开连接,即手机断开 当前战略 在我脑海中,我的策略是让每个客户机大约每5秒ping一次服务器,这就像心跳一样。如果一个客户端错过了一个间隔,服务器将通知另一个客户端 担心 这似乎不能很好地扩展。服务器必须为每个客户端使用一个侦听器。让成千上万的客户机ping服务器听起来相当残忍 问题: 如何在能够扩展的同时相对快速地确定客户

目标

我正在使用套接字实现一个带有聊天轮盘赌功能的即时消息应用程序。 如果两个客户正在通话,而其中一个断开了连接,那么另一个客户需要知道。 断开连接包括正常断开连接和不正常断开连接,即手机断开

当前战略

在我脑海中,我的策略是让每个客户机大约每5秒ping一次服务器,这就像心跳一样。如果一个客户端错过了一个间隔,服务器将通知另一个客户端

担心

这似乎不能很好地扩展。服务器必须为每个客户端使用一个侦听器。让成千上万的客户机ping服务器听起来相当残忍

问题:

如何在能够扩展的同时相对快速地确定客户端断开连接

旁注


服务器端使用php。客户端使用java。

您确实意识到,有序关闭客户端将关闭套接字,服务器将立即收到通知。ping可以用来检测异常关机,不需要非常频繁。@jfriend00谢谢。我知道我可以立即检测到正常的断开连接,但我的设计需要在服务器上始终运行一个脚本。因此,ping服务器进行非正常断开似乎会使执行此脚本的cpu无法工作。但是在阅读了你的回复后,我意识到我可以让一个客户端查询我的数据库,以检查其他用户是否仍然在线。如果另一个用户处于脱机状态,但我尚未收到来自服务器的通知,则这意味着非正常断开连接。这不会使服务器上的单个进程过载。