Once websocket is connected, loop does not continue

I have Unity app, which I'm testing on an iPhone, connecting to a Wildfly backend. The editor simulator is working perfectly, as was the iOS version until a random build last night.

I'm using websocket-sharp as my websocket library, and it's suddenly causing long delays when connecting. My connection code, as mostly per the supplied plugin, is

public IEnumerator Connect()
    m_Socket = new WebSocketSharp.WebSocket(mUrl.ToString());
    if (username != null) {
        m_Socket.SetCredentials (username, password, true);
    m_Socket.OnMessage += (sender, e) => m_Messages.Enqueue (e.RawData);
    m_Socket.OnOpen += (sender, e) =>
        m_IsConnected = true;
        Debug.Log("Connection opened");
    m_Socket.OnError += (sender, e) => {
        Debug.Log (e);
        m_Error = e.Message;

    while (!m_IsConnected && m_Error == null)
        yield return new WaitForSeconds(0.1f);

Previously, when the error began, the yield return code in the loop was

yield return 0;

But both are showing the connection delay.

I've added the Debug.Log on the connection opened, and using it I can see that the connection is opened quite a long time before the Connect() method ends. My code waiting for the connect method is,

    Debug.Log ("called connect");

    yield return StartCoroutine(ws.Connect());

    Debug.Log ("Connected: " + ws.m_IsConnected);

I average around 30s of wait between the two, although I can see the "Connection opened" printed long before this. Prior to the build (which I believe was right before Unity updated to 5.5), there was absolutely no delay. On the server side, I can see the connection is opened successfully, but the Connect method isn't returning.

Any ideas?