C# 在不同端口上创建Web套接字服务器时出现问题?

C# 在不同端口上创建Web套接字服务器时出现问题?,c#,websocket,C#,Websocket,我们目前使用的是Windows 2008,需要使用Web套接字。我们无法使用Windows 8或Windows 2012迁移到IIS8,因为它在IIS中内置了本机web套接字支持 因此,我们正在考虑通过第三方web套接字服务器使用web套接字 然而,有人提到,我们将不得不使用端口80以外的其他端口,我们目前正在为我们的web服务器应用程序使用端口80 显然,使用其他端口可能会导致某些安装出现问题,因为他们必须打开网络上的端口 那么,我的选择是什么? 我可以在80上进行Web套接字调用并重新路由它

我们目前使用的是Windows 2008,需要使用Web套接字。我们无法使用Windows 8或Windows 2012迁移到IIS8,因为它在IIS中内置了本机web套接字支持

因此,我们正在考虑通过第三方web套接字服务器使用web套接字

然而,有人提到,我们将不得不使用端口80以外的其他端口,我们目前正在为我们的web服务器应用程序使用端口80

显然,使用其他端口可能会导致某些安装出现问题,因为他们必须打开网络上的端口

那么,我的选择是什么? 我可以在80上进行Web套接字调用并重新路由它,以便将其作为websocket调用处理吗


我们真的不想移动到Windows 8或Windows 2012

这里我可能错了,但Windows 8附带的http.sys允许两个不同的进程在同一端口上侦听。如果Win 2008上没有这样做的选项,那么您必须在前面放置某种代理,以适当地分割和路由呼叫。此代理可以在Windows 2012上运行,您将不会遇到任何问题。这里的一个复杂问题是,打开webSocket的启动方式是在同一端口上的http请求。因此,您不能简单地将端口80上所有传入的webSocket请求代理到您的另一台服务器上——这比代理要复杂一点。相反,您必须有一个足够智能的代理来查看http请求,这实际上是打开webSocket的第一步并转发该请求,而不是转发其他web请求。这可能是可以做到的,但它比一个简单的代理稍微复杂一点。你不能让两个不同的进程同时监听同一个端口。也就是说,即使使用“SO_REUSEADDR”选项及其相关项,任何给定的流量也只会进入一个套接字。您需要一种可靠的方法将WebSocket流量转移到WebSocket服务器,同时将web服务器的正常HTTP流量保持在旧服务器上。我认为一种选择是在端口80上运行WebSocket服务器,并让它同时充当代理,当它(然而)确定流量不是有效的WebSocket流量时,将流量转发到IIS实例。但是,呃。