Issue with WebSocket Secure (wss) connection on iOS (works on Node.js, fails on iOS app)

Hello everyone,

I’m developing an iOS application that uses WebSocket Secure (wss) to connect to a backend server, which is working correctly. The server is hosted on Render.com and accepts connections over https and wss.

Context:

•	I can connect to the backend without issues using HTTPS from both the app and a web browser.
•	Using Node.js and the Socket.IO client, the WebSocket connection to the server works correctly over wss://.
•	The server is configured with a valid SSL certificate (the HTTPS connection is verified and works in a browser).
•	The problem occurs when I try to connect from the iOS client (using Socket.IO in Swift) to the server through wss://social-gamer-backend.onrender.com. The connection consistently fails on iOS.

The Issue:

Even though the URL is correctly configured, and I can connect via Node.js, when I attempt to connect from the iOS app, I get connection-related errors. The most common error is:

Error while connecting to the socket: Tried emitting when not connected

•	The server URL is correct (wss://social-gamer-backend.onrender.com).
•	The JWT token is being sent correctly in the headers.
•	There are no visible SSL certificate issues since the HTTPS connection works fine.
•	I’ve tried enabling and disabling App Transport Security (ATS) in the Info.plist.
•	From Node.js, the same connection code works fine, indicating that the WebSocket server is active and operational.

Current iOS Configuration:

let manager = SocketManager(socketURL: url, config: [ .log(true), .compress, .reconnects(true), .forceWebsockets(true), .extraHeaders(["Authorization": "Bearer (token)"]) ])

What I’ve tried so far:

1.	I’ve tested the connection on different networks, including Wi-Fi and mobile data.
2.	I’ve checked the iOS device restrictions and disabled potential network limitations.
3.	I’ve enabled detailed logs in Crashlytics, but I can’t find any relevant information indicating why the connection is failing.
4.	The same URL with wss:// works on Node.js, so it’s not an issue with the WebSocket server.

Question:

What could be preventing the iOS app from establishing a successful connection to the WebSocket server over wss://? Is there anything else I should configure in the app or server to allow iOS to handle secure WebSocket connections?

I would appreciate any help or suggestions to resolve this issue.

Thank you in advance.

It’s hard to offer any advice here without knowing what Apple API is in play. Are you able to debug this through the layers of your third-party runtime to work out what API it’s using? If so, please let me know. If not, my advice is that you escalate this via the support channel for your third-party runtime.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Issue with WebSocket Secure (wss) connection on iOS (works on Node.js, fails on iOS app)
 
 
Q