溫馨提示×

能否舉例說明如何使用SignalR實現一個實時聊天應用

小樊
119
2024-05-09 15:14:56
欄目: 編程語言

當用戶A發送消息給用戶B時,SignalR可以實現實時聊天應用。以下是一個示例:

  1. 創建一個SignalR Hub類,并在其中定義一個方法接收并轉發消息:
public class ChatHub : Hub
{
    public void SendMessage(string sender, string receiver, string message)
    {
        Clients.Group(receiver).SendAsync("ReceiveMessage", sender, message);
    }

    public override Task OnConnectedAsync()
    {
        Groups.AddToGroupAsync(Context.ConnectionId, Context.User.Identity.Name);
        return base.OnConnectedAsync();
    }
}
  1. 在前端頁面中引用SignalR庫,并連接到Hub:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.3/signalr.min.js"></script>
<script>
    var connection = new signalR.HubConnectionBuilder()
        .withUrl("/chatHub")
        .build();

    connection.start();

    connection.on("ReceiveMessage", function (sender, message) {
        // 處理接收到的消息
    });
</script>
  1. 在前端頁面中添加發送消息的功能,并調用Hub的方法:
<input type="text" id="messageInput" />
<button onclick="sendMessage()">Send</button>

<script>
    function sendMessage() {
        var sender = "UserA";
        var receiver = "UserB";
        var message = $("#messageInput").val();

        connection.invoke("SendMessage", sender, receiver, message);
    }
</script>

通過以上示例,用戶A在輸入框中輸入消息并點擊發送按鈕時,消息將通過SignalR實時傳輸到用戶B,并在用戶B的頁面上實時顯示。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女