我想在两台计算机之间工作的双向协议在彼此之间发送数据,当我改变网络时(在java中)将继续工作。
我尝试使用websocket在两台计算机之间发送数据(不是两台计算机都是客户端和服务器,服务器在亚马逊上有静态IP地址,而客户端在我的本地网络中)我这是行为观察到的。
但是当我将我的客户端从一个网络切换到另一个网络时(因为网络丢失了互联网连接),显然客户端已经改变了IP地址,计算机之间的通信(客户端是服务器)不再起作用。我怎么能这样沟通仍然可用?
如果不可能,当我将客户端从一个网络切换到另一个网络时,是否还有任何双向协议仍然有效?
答案 0 :(得分:0)
我无法想到另一个自动处理ip开关的双向协议。我可以保证没有“标准”协议可以做到这一点。
您可以在WebSocket上的应用程序级别处理它。
例如:
服务器端:您为每个客户端分配一个单义ID。您可以跟踪已连接的客户端,并在断开连接太长时间后停止跟踪它们。如果具有已知id的客户端要求启动websocket连接,您可以从中断的地方继续,否则您分配一个新ID;
客户端:当连接断开时(我猜错误事件)你会定期尝试开始一个新的websocket握手发送你的id;
当然使用简单的ID并不是那么安全,如果您重新加载页面或从其他选项卡打开它,则不会考虑它。无论如何,这些问题可以通过许多不同的方式轻松解决(例如,如果用户经过身份验证)。