【问题标题】:Get Data from WebSocket using .Net ClientWebSocket使用 .Net ClientWebSocket 从 WebSocket 获取数据
【发布时间】:2016-12-28 07:53:25
【问题描述】:

我需要从 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 中,我是否必须添加一些标头才能模拟浏览器代理?

感谢支持

【问题讨论】:

  • 我已经用 ws://echo.websocket.org 尝试了你的代码,它工作正常。
  • 嗨 Memmet,是的,它适用于 ws://echo.websocket.org 但不适用于我必须使用的 websocket。
  • 嗨 Memmet,是的,它适用于 ws://echo.websocket.org,但不适用于我必须使用的 websocket。如果你检查我的答案,现在我可以连接了,我只需要添加一些标题,握手就可以了......

标签: c# websocket wss clientwebsocket


【解决方案1】:

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

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

这个帖子帮我解决了很多问题:

Setting "User-Agent" HTTP header in ClientWebSocket

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多