Bonsoir
Bonsoir copied to clipboard
iOS cannot discover a host running on Windows
Describe the bug iOS cannot discover a host running on Windows.
I tested as follows:
- Connect all devices to the same WiFi (and checked they are assigned to 192.168.0.x)
- Start hosting on Windows and macOS
- iOS discovers a host running on macOS
- iOS cannot discover a host running on Windows
- Android discovers a host running on macOS and Windows
Version info:
- Bonsoir 5.1.8
- Windows 10 22H2(19045.3930)
- macOS 14.2.1
- iOS 17.2.1
- Android 14
FYI, there is no errors or other logs printed. Not sure it is a bug. Thanks for your nice work!
Are you sure you're discovering the correct type ? Do you have a snippet or something ?
I think I discovered the correct type. Here are some snippets.
startDiscovery()
_dnsHost = BonsoirBroadcast(
service: BonsoirService(
name: "my_bonsoir_server",
type: "_dns-service._tcp",
port: 56000,
),
);
await _dnsHost?.ready;
await _dnsHost?.start();
startScan()
BonsoirDiscovery discovery = BonsoirDiscovery(type: "_dns-service._tcp");
_mDnsDiscovery.discovery = discovery;
await discovery.ready;
discovery.eventStream!.listen((event) async {
if (event.type == BonsoirDiscoveryEventType.discoveryServiceFound) {
debugPrint('Service found : ${event.service?.toJson()}');
if (event.service is ResolvedBonsoirService) {
...
return;
}
// Should be called when the user wants to connect to this service.
await event.service!.resolve(discovery.serviceResolver);
} else if (event.type == BonsoirDiscoveryEventType.discoveryServiceResolved) {
debugPrint('Service resolved : ${event.service?.toJson()}');
...
} else if (event.type == BonsoirDiscoveryEventType.discoveryServiceLost) {
debugPrint('Service lost : ${event.service?.toJson()}');
...
}
});
await discovery.start();
Not sure it helps you but this is all I've got.
- Side question: when the event.type is "discoveryServiceFound", event.service can be "ResolvedBonsoirService"?
Side question: when the event.type is "discoveryServiceFound", event.service can be "ResolvedBonsoirService"?
Nop !
I am running into this same issue:
- Windows, Mac and Linux apps are using Bonsoir to broadcast, Android and iPhone apps are using Bonsoir to discover
- All devices are on the same Wi-Fi network running the same version of Bonsoir
- Android sees all three broadcasts, iPhone sees two, missing Windows
- No Windows discovery events show up on the iPhone
- Both phones successfully resolve the hosts they see
Versions:
- Bonsoir 5.1.8
- Windows 11 Pro 23H2 (22631.3155)
- macOS 14.3.1
- Linux Ubuntu 22.04.3 LTS (Avahi Daemon 0.8)
- iOS 15.7.9
- Android 13
Hey,
This could be the same problem than https://stackoverflow.com/questions/60925721/my-ios-macos-devices-are-unable-to-resolve-my-bonjour-zeroconf-service-created-o. Does it work with a ResolvedBonsoirService
?
(Sorry maybe I'm misunderstanding)
With the link it looks like they used an npm package to broadcast a bonjour service which iOS discovered sucessfully, but couldn't resolve it without an extra parameter in the broadcast. But in our case iOS is not even discovering the service.
ResolvedBonsoirService
works with the discovered Mac and Linux services, and I assume if the Windows service was discovered, it would work too.
You're right, I've misread the SO post. I'll continue to investigate on my side, but feel free to post here if you got something new.