IIS & Apache Deployment
If you choose to deploy your application as a module there are special considerations that must be taken into account. Regardless of type of your module—whether it is an ISAPI module or a native Apache module—the same steps should be followed.
When you deploy your application as a module uniGUI will not activate its internal HTTP server. All web requests will be handled by the external web server (Apache, IIS, or any other compatible web server). This means that uniGUI cannot serve WebSocket requests on the same port/address used by the external web server. There are two ways to overcome this problem:
Serve WebSocket requests on a different port and/or IP address
Run a separate HTTP server for WebSocket requests on an auxiliary service port, an additional IP address, or both. uniGUI prefers this method for several reasons:
Each web server uses its specific WebSockets API. There is no standard or common API for all supported web servers.
In Microsoft IIS the WebSockets API is available for .NET applications, but for native ISAPI modules there is no documented API from Microsoft.
Some web servers use rewrite rules and proxying techniques instead of providing a WebSockets API.
APIs can change across web server editions or versions.
Taking the above into consideration, the only reliable way to implement WebSockets for an external web server is using a separate HTTP server for WebSocket requests. Additionally, if your particular web server prefers proxying WebSocket requests to another server, it is mandatory to implement a different HTTP server for WebSocket requests.
For details see: Binding to a Different Port or IP Address.