如何在代理服务器方面使我的websockets客户端健壮?

时间:2014-05-29 12:46:08

标签: websocket

我一直致力于将websockets(.NET 4.5.1 / IIS 8.5 / Microsoft.WebSockets Nugets包)添加到现有的车队跟踪解决方案中。

我们已经有一个推送服务器,它使用TCP套接字向Java小程序发送实时跟踪更新,同时回退到Ajax轮询。因此,到目前为止,我的工作相对简单,除了Microsoft.WebSockets Nuget包之外,我不需要任何第三方库。我有代码来处理和管理服务器端的Web套接字连接,并通过Web套接字推送相同的数据,就像推送到现有的Java小程序一样。

客户端,我对Web套接字执行功能检查,如果可用,则创建连接;否则我会根据已定义的规则回退到Java或轮询。

它工作得很漂亮,我对这项技术印象非常深刻。

但是,我现在需要考虑当事情不能很好地工作时要做什么,特别是如果客户支持代理并不支持websockets升级请求。如果我不必,我宁愿不必安装臃肿的图书馆。

我的问题是,我需要做什么才能使我的websockets客户端在代理服务器方面更健壮?

我对于什么将构成一个有用的答案持开放态度,但我认为以下其中一个可能会有所帮助(我所研究的所有这些都没有找到任何用处) -

  1. 我可以将fiddler配置为一个麻烦的代理吗? (目前,websockets连接通过fiddler工作没有任何问题)

  2. 是否有免费的Windows代理我可以下载和安装哪些不支持websocket连接?

  3. 是否有任何库代码可以演示在这种情况下要做什么,或者任何轻量级的JS库会尝试为我创建套接字并让我知道是否存在难以克服的问题?

  4. 我已经知道如何通过在创建套接字时捕获错误并监听events来实现它,也许与成功更新收到的计数器相结合,但我真的很想看到自己使用已损坏的代理或使用已知良好的库代码!

1 个答案:

答案 0 :(得分:1)

使用WSS://架构。代理将无法弄乱HTTP标头。

How HTML5 Web Sockets Interact With Proxy Servers

否则,websocket不友好的代理如何弄乱你的WebSocket连接是不可预测的。