亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

asp.net websocket啥流程

小樊
81
2024-11-23 06:00:17
欄目: 編程語言

ASP.NET Core WebSocket 是一種在 ASP.NET Core 應用程序中實現實時雙向通信的技術。以下是使用 ASP.NET Core WebSocket 的流程:

  1. 創建 WebSocket 中間件:首先,需要在 ASP.NET Core 應用程序中創建一個 WebSocket 中間件。這可以通過在 Startup.cs 文件中的 Configure 方法中添加以下代碼來實現:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapWebSocket("/ws");
    });
}
  1. 創建 WebSocket 處理程序:接下來,需要創建一個處理 WebSocket 連接和消息的類。這可以通過創建一個新的類并實現 IDisposable 接口來實現:
public class MyWebSocketHandler : IDisposable
{
    private readonly WebSocket _webSocket;
    private readonly Task _listenTask;

    public MyWebSocketHandler(WebSocket webSocket)
    {
        _webSocket = webSocket;
        _listenTask = ListenAsync();
    }

    private async Task ListenAsync()
    {
        while (! _webSocket.CloseStatus.HasValue)
        {
            var result = await _webSocket.ReceiveAsync();
            if (result.CloseStatus.HasValue)
            {
                break;
            }

            // 處理接收到的消息
            var message = Encoding.UTF8.GetString(result.Buffer);
            Console.WriteLine($"Received message: {message}");

            // 發送響應消息
            var response = Encoding.UTF8.GetBytes($"Echo: {message}");
            await _webSocket.SendAsync(new ArraySegment<byte>(response), result.MessageType, result.EndOfMessage);
        }
    }

    public void Dispose()
    {
        _webSocket.Dispose();
    }
}
  1. 在控制器中使用 WebSocket:現在可以在控制器中使用 WebSocket。例如,在 HomeController.cs 文件中,可以添加一個處理 WebSocket 連接的方法:
[HttpGet]
public async Task<IActionResult> Index(string id)
{
    if (id == "ws")
    {
        var webSocket = new WebSocketOptions
        {
            // 設置 WebSocket 選項,如子協議等
        };

        using (var handler = new MyWebSocketHandler(HttpContext.WebSockets.AcceptWebSocket(webSocket)))
        {
            // 等待 WebSocket 連接關閉
            await handler.ListenTask;
        }
    }

    return View();
}
  1. 創建前端頁面:最后,需要創建一個前端頁面來與 WebSocket 服務器進行通信。這可以通過使用 JavaScript 的 WebSocket API 來實現:
<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Example</title>
</head>
<body>
    <h1>WebSocket Example</h1>
    <input type="text" id="messageInput" placeholder="Type a message">
    <button id="sendButton">Send</button>
    <ul id="messages"></ul>

    <script>
        const webSocket = new WebSocket('ws://' + window.location.host + '/ws');

        webSocket.addEventListener('open', (event) => {
            console.log('WebSocket connection opened:', event);
        });

        webSocket.addEventListener('message', (event) => {
            const messagesList = document.getElementById('messages');
            const messageItem = document.createElement('li');
            messageItem.textContent = event.data;
            messagesList.appendChild(messageItem);
        });

        document.getElementById('sendButton').addEventListener('click', () => {
            const input = document.getElementById('messageInput');
            webSocket.send(input.value);
            input.value = '';
        });
    </script>
</body>
</html>

現在,當用戶訪問前端頁面并輸入一條消息后,瀏覽器將通過 WebSocket 連接將消息發送到服務器,服務器將處理消息并將響應發送回客戶端。客戶端將顯示接收到的響應消息。

0
临沭县| 乌拉特中旗| 祁东县| 永靖县| 西充县| 广宗县| 寻乌县| 永定县| 灵石县| 林周县| 阳朔县| 通河县| 渝中区| 微山县| 加查县| 陈巴尔虎旗| 麟游县| 西贡区| 二连浩特市| 马山县| 新邵县| 布拖县| 镇安县| 澄城县| 宣化县| 临城县| 泰州市| 本溪市| 陵水| 长治市| 镶黄旗| 陵川县| 鄂托克旗| 乌拉特后旗| 宁武县| 广汉市| 介休市| 左贡县| 庐江县| 沐川县| 鄂伦春自治旗|