1

我需要从 WebSocket 收集数据。

如果我尝试使用此站点测试 websocket:http ://www.websocket.org/echo.html我可以毫无问题地连接和发送消息,但是当我尝试使用 .Net Framework 库连接到 websocket 时,我得到:

System.Net.WebException:内部服务器错误 (500)。

我用来连接的代码是这样的:

        string uri = "wss://wss.xxx.xxx";
        ClientWebSocket webSocket = null;
        try
        {
            webSocket = new ClientWebSocket();
            await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
            await Task.WhenAll(Receive(webSocket), Send(webSocket));
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: {0}", ex);
        }

如果我尝试连接到任何其他网络套接字,代码运行良好......

与其他 websocket 的不同之处在于地址以“ wss ”而不是“ ws ”开头(认为它是因为安全连接)。

如果我使用 Chrome 之类的浏览器进行测试,websocket 连接可以工作,但不能在 .Net 中,我是否必须添加一些标头才能模拟浏览器代理?

感谢支持

4

1 回答 1

0

最后经过一番搜索,我发现了问题:我只需要向 ClientWebSocket 添加标头。

问题是 ClientWebSocket 没有提供添加特定标头的方法,我不得不使用 ClientWebSocket。

这个线程帮助我解决了我的问题:

在 ClientWebSocket 中设置“User-Agent”HTTP 标头

使用这个新版本的 ClientWebSocket 我能够添加标头。

于 2016-12-28T08:26:22.510 回答