iOS WebSocket连接即时断开

时间:2019-01-24 17:15:53

标签: c# ios swift starscream

我正在尝试在iOS客户端(iPad Air 2)和C#服务器之间建立Websocket连接。

在iOS上,我使用Starscream(https://github.com/daltoniam/Starscream)进行网络套接字连接。但是,在我成功连接到服务器之后,它会自动断开连接。 Sec-WebSocket-Accept双方都相同。 我猜该错误在我的C#服务器中,但是我无法弄清楚到底是什么错误。

这是我的iOS代码:

import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';

export function convertObservableToBehaviorSubject<T>(observable: Observable<T>, initValue: T): BehaviorSubject<T> {
    const subject = new BehaviorSubject(initValue);

    observable.subscribe(
        (x: T) => {
            subject.next(x);
        },
        (err: any) => {
            subject.error(err);
        },
        () => {
            subject.complete();
        },
    );

    return subject;
}

这是我的C#服务器:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    unsigned int y, k, n;
    set <int> s;
    cin >> y >> k >> n;
    if (y >= n)
    {
        cout << -1; return 0;
    }
    for (int i = y + 1; i <= n; i++)
    {
        if (i%k == 0)
        {
            s.insert(i - y);
        }
    }
    if (s.begin() == s.end())
    {
        cout << -1; return 0;
    }
    for (auto x : a)
        cout << x << " ";
}

2 个答案:

答案 0 :(得分:0)

您所需要的只是一个监听循环。因为这是自上而下的执行,所以在编写响应后,tcp客户端侦听器将停止。您可以看一下此实现https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.7.2

答案 1 :(得分:0)

我发现了问题,它在我的C#服务器内部: 连接客户端并且握手成功后,您必须致电

server.AcceptSocket(); //or server.AcceptSocketAsync()