使用.Net ClientWebSocket

时间:2016-12-28 07:53:26

标签: c# websocket wss clientwebsocket

我需要从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);
        }

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

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

如果我使用像Chrome这样的浏览器测试websocket连接是否有效,但是在.Net中,可能是我必须添加一些标头才能模拟浏览器代理?

感谢支持

1 个答案:

答案 0 :(得分:0)

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

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

这个帖子帮助我解决了我的问题:

Setting "User-Agent" HTTP header in ClientWebSocket

使用这个新版本的ClientWebSocket我可以添加标题。