我正在通过 SSLSocket 将 Java 服务器连接到 Android 应用程序。他们通过发送 JSON 对象进行通信。
我的服务器需要:
- 检查应用用户的登录信息
- 保持该连接以进行进一步的通信,以防止再次握手(以减少网络数据)并在进一步的交互中识别用户
我完成了第一点,连接已建立并且可以正常工作。但是我怎样才能实现第二个呢?
(让用户连接到的线程保持 Activity 状态直到他关闭套接字似乎是不合适的。我需要考虑数千个连接时间跨度从一分钟到一小时不等的连接。)
最佳答案
JSSE 已经在进行 SSL session 共享。别担心。只需根据需要创建 SSLSockets。如果可以,他们将重新加入现有 session 。重新加入 session 使用简短的握手。
您也不需要在服务器上进行特殊安排。另一方面,客户端的连接池从来没有坏处,但服务器不需要知道太多,除了循环接受来自一个连接的多个请求而不是在发送第一个响应后关闭它。
关于Java:如何在池中维护 SSLSocket session 以防止对每条消息进行新的握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17550274/