是的,ASP.NET WebSocket 可以在不同的應用程序和項目中進行復用。為了實現這一點,您可以將 WebSocket 處理程序封裝到一個可重用的類或模塊中。這樣,您可以在多個項目中將此類或模塊添加為引用,并在需要時輕松地使用它們。
以下是一個簡單的示例,說明如何創建一個可重用的 WebSocket 處理程序類:
using System;
using System.Net.WebSockets;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
public class MyWebSocketHandler
{
private readonly WebSocket _webSocket;
public MyWebSocketHandler(WebSocket webSocket)
{
_webSocket = webSocket;
}
public async Task HandleAsync()
{
var buffer = new byte[1024 * 4];
WebSocketReceiveResult result;
do
{
result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
}
while (!result.CloseStatus.HasValue);
// 處理接收到的消息和發送響應
}
}
然后,在您的 ASP.NET Core 項目中,您可以使用依賴注入將此處理程序添加到您的控制器或其他需要使用 WebSocket 的類中:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
[ApiController]
[Route("api/[controller]")]
public class MyWebSocketController : ControllerBase
{
private readonly MyWebSocketHandler _webSocketHandler;
public MyWebSocketController(MyWebSocketHandler webSocketHandler)
{
_webSocketHandler = webSocketHandler;
}
[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
{
// 使用 _webSocketHandler 處理 WebSocket 連接
await _webSocketHandler.HandleAsync();
return Ok();
}
}
這樣,您可以在多個項目中重用 MyWebSocketHandler
類,而無需在每個項目中重復實現 WebSocket 功能。