LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

websocket能否和iis网站共用同一个端口提供服务?

admin
2025年4月27日 22:58 本文热度 105

WebSocket 可以与 IIS 网站共用同一个端口提供服务,具体原因和配置要点如下:


### **1. 协议兼容性**

- **HTTP 升级机制**:WebSocket 通过 HTTP 的 `Upgrade` 头(例如 `Upgrade: websocket`)完成握手,之后切换到独立的双工通信。IIS 能够识别这种握手请求并升级连接,因此**同一个端口(如 80 或 443)可同时处理 HTTP 和 WebSocket 流量**。


### **2. IIS 版本要求**

- **IIS 8.0+ 原生支持**:从 IIS 8.0(Windows Server 2012 / Windows 8 起)开始内置 WebSocket 模块(`WebSocketProtocolModule`),无需额外扩展。早期版本需借助第三方工具(如 [ASP.NET SignalR](https://learn.microsoft.com/en-us/aspnet/signalr/))实现类似功能。


### **3. 配置步骤**

1. **启用 WebSocket 模块**:

   - 在 IIS 管理器中,确认 `WebSocket Protocol` 功能已安装并启用(位于“服务器角色”或“功能”中)。

2. **应用程序池设置**:

   - 确保应用程序池使用 .NET Framework 4.5+(因 WebSocket API 需要此版本支持)。

3. **绑定配置**:

   - 在网站绑定时,**无需单独为 WebSocket 添加端口**,直接复用 HTTP(S) 的端口(如 80/443)。

4. **路径路由**:

   - 通过 URL 路径区分服务(例如 `/api` 处理 HTTP,`/ws` 处理 WebSocket),在代码或框架(如 ASP.NET Core)中定义路由逻辑。


### **4. SSL/TLS 注意事项**

- **wss:// 支持**:若使用加密 WebSocket(wss://),需为 IIS 站点配置有效的 SSL 证书,并确保客户端通过 `https://` 发起初始握手。


### **5. 潜在问题与解决**

- **模块冲突**:若 URL 重写模块(如 `RewriteModule`)拦截了 WebSocket 握手请求(`Upgrade` 头),需添加排除规则:

  ```xml

  <system.webServer>

    <rewrite>

      <outboundRules>

        <rule name="Exclude WebSocket" stopProcessing="true">

          <match serverVariable="RESPONSE_Upgrade" pattern="^websocket$" />

          <conditions>

            <add input="{REQUEST_Upgrade}" pattern="^websocket$" />

          </conditions>

          <action type="None" />

        </rule>

      </outboundRules>

    </rewrite>

  </system.webServer>

  ```

- **防火墙/NAT 配置**:确保中间网络设备允许 WebSocket 的长连接特性(避免过早关闭空闲连接)。


### **6. 验证方法**

- **客户端测试**:使用浏览器开发者工具或 `wscat` 工具连接 WebSocket 端点,观察握手是否成功(HTTP 101 状态码)。

- **IIS 日志**:检查日志文件(默认位于 `%SystemDrive%\inetpub\logs\LogFiles`)中是否存在 WebSocket 相关请求记录。


### **总结**

IIS 8.0+ 可无缝在同一端口(如 80/443)同时托管 HTTP 和 WebSocket 服务,关键在于正确配置模块、路由及排除潜在拦截规则。


该文章在 2025/4/27 22:58:12 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved