使用 WebSockets 在本地网络中发现服务
Service discovery in local network using WebSockets
我有一个在前端 Web 中运行的 Web 应用程序,它通过 WiFi 通过 tcp WebSocket 协议连接到同一本地网络中的 Android 设备。
现在,Android 设备设置了一个 WebSocket 服务器(因为大多数 Web 浏览器不支持创建 WebSocket 服务器,它是充当服务器的设备),我在 Web 应用程序中手动插入设备 IP然后按 "connect" 按钮开始通信。
我想通过使 Web 应用程序在其局域网中搜索 WebSocket 服务器来自动执行此连接。如何才能做到这一点?通过尝试迭代连接到所有可能的 IP 的蛮力方法是否可行?还有其他有效的方法吗?
谢谢。
如果子网很小,迭代方法会起作用,大多数家庭路由器都有较小的子网...但是在更复杂的网络上,迭代方法不可行,您需要使用服务发现协议像 mdns 或 ssdp。然而,这些可能不适用于 Web 浏览器,您最好的选择是将服务器置于互联网上,设备可以在其中会合并交换本地 IP 信息......但是,如果网络足够复杂,即使设备具有相同外部 IP 的用户可能无法在其各自的子网之间进行通信。
我有一个在前端 Web 中运行的 Web 应用程序,它通过 WiFi 通过 tcp WebSocket 协议连接到同一本地网络中的 Android 设备。
现在,Android 设备设置了一个 WebSocket 服务器(因为大多数 Web 浏览器不支持创建 WebSocket 服务器,它是充当服务器的设备),我在 Web 应用程序中手动插入设备 IP然后按 "connect" 按钮开始通信。
我想通过使 Web 应用程序在其局域网中搜索 WebSocket 服务器来自动执行此连接。如何才能做到这一点?通过尝试迭代连接到所有可能的 IP 的蛮力方法是否可行?还有其他有效的方法吗?
谢谢。
如果子网很小,迭代方法会起作用,大多数家庭路由器都有较小的子网...但是在更复杂的网络上,迭代方法不可行,您需要使用服务发现协议像 mdns 或 ssdp。然而,这些可能不适用于 Web 浏览器,您最好的选择是将服务器置于互联网上,设备可以在其中会合并交换本地 IP 信息......但是,如果网络足够复杂,即使设备具有相同外部 IP 的用户可能无法在其各自的子网之间进行通信。