Kết nối SignalR API bằng Postman

Kết nối SignalR API bằng Postman

June 25, 2025 0 By Nam Vu

Việc kết nối tới các API của SignalR mà không sử dụng client SDK của nó có thể gặp khó khăn, bởi vì SignalR sử dụng giao thức WebSocket, không đơn giản như việc gửi một HTTP request thông thường. Bài viết này sẽ hướng dẫn bạn cách sử dụng tính năng WebSocket trong Postman để kết nối với các API SignalR, đồng thời gửi và nhận message.

1. Chuẩn bị một dự án SignalR

Nếu bạn đã có sẵn một dự án SignalR, có thể bỏ qua bước này. Nếu chưa, bạn có thể bắt đầu nhanh chóng bằng cách clone một dự án mẫu như sau:

git clone <https://github.com/aspnet/SignalR-samples.git>
cd ./SignalR-samples/ChatSample
dotnet run --project ChatSample

Dự án mẫu này có hai method chính:

  • send(name, message) – client gửi message lên server.
  • broadcastMessage(name, message) – server gửi message tới toàn bộ client.

2. Tạo WebSocket Request trong Postman

Nhấn vào nút New → chọn WebSocket Request.

Trong ô nhập URL, điền địa chỉ WebSocket:

ws://localhost:5000/chat

Tiếp theo, gửi message đầu tiên để thiết lập định dạng giao tiếp:

{"protocol":"json","version":1}

Lưu ý: Mỗi message gửi đi phải kết thúc bằng ký tự 0x1E (U+001E). Đây là ký tự không hiển thị được và khó nhập bằng bàn phím. Bạn có thể dùng extension VS Code Insert Unicode để chèn ký tự này, sau đó copy/paste vào Postman.

Trong bài viết này, chúng ta sử dụng định dạng JSON để đơn giản hơn trong việc viết và đọc message. Nếu bạn sử dụng MessagePack, có thể mã hóa base64 và dán vào Postman.

Nếu bạn thấy response trả về như hình dưới trong Postman, nghĩa là bạn đã kết nối thành công tới SignalR server và gửi được message đầu tiên.

3. Gửi message để chat

SignalR có nhiều kiểu message (MessageType). Trong bài viết này, ta sử dụng kiểu InvocationMessage để gửi message một lần.

Định nghĩa class:

public abstract class HubMethodInvocationMessage : HubInvocationMessage
{
     public string Target { get; }
     public object?[] Arguments { get; }
     public string[]? StreamIds { get; }
}

public class InvocationMessage : HubMethodInvocationMessage {}

Các type message của SignalR:

public static class HubProtocolConstants
{
     public const int InvocationMessageType = 1;
     public const int StreamItemMessageType = 2;
     public const int CompletionMessageType = 3;
     public const int StreamInvocationMessageType = 4;
     public const int CancelInvocationMessageType = 5;
     public const int PingMessageType = 6;
     public const int CloseMessageType = 7;
}

Sau khi kết nối thành công, bạn sẽ nhận được nhiều message {"type":6} – đó là các gói ping kiểm tra kết nối còn sống hay không.

Để gửi message đến các client khác, bạn có thể sử dụng dạng sau:

{"type":1, "target":"send", "arguments":["Wade","Hi"]}
{"type":1, "target":"send", "arguments":["Wade","Thanks for reading my post"]}

Mở trình duyệt truy cập http://localhost:5000 để mở giao diện chat – nơi bạn có thể gửi/nhận message như một client khác.

4. Sử dụng DevTool để phân tích

Hầu hết các trình duyệt hiện đại đều hỗ trợ xem traffic của WebSocket thông qua Developer Tools. Bạn có thể sử dụng tính năng này để kiểm tra nội dung giao tiếp của SignalR.

Tham khảo

Bài viết này giúp bạn hiểu cách kết nối tới SignalR server thông qua Postman WebSocket, một kỹ năng hữu ích khi bạn muốn test thủ công hoặc debug các ứng dụng thời gian thực mà không cần viết client code.

#ntechdevelopers