Ping

協議版本: 2024-11-05

模型上下文協議包含一個可選的 ping 機制,允許任何一方驗證其對方仍然響應且連接處於活動狀態。

概述

ping 功能通過簡單的請求/響應模式實現。客戶端或服務器都可以通過發送 ping 請求來啟動 ping。

消息格式

ping 請求是一個沒有參數的標準 JSON-RPC 請求:

{
  "jsonrpc": "2.0",
  "id": "123",
  "method": "ping"
}

行為要求

  1. 接收方必須立即響應一個空響應:
{
  "jsonrpc": "2.0",
  "id": "123",
  "result": {}
}
  1. 如果在合理的超時期限內沒有收到響應,發送方可以
    • 認為連接已過時
    • 終止連接
    • 嘗試重新連接程序

使用模式

  sequenceDiagram
    participant Sender
    participant Receiver

    Sender->>Receiver: ping 請求
    Receiver->>Sender: 空響應

實現考慮

  • 實現應該定期發出 ping 以檢測連接健康狀況
  • ping 的頻率應該是可配置的
  • 超時應該適合網絡環境
  • 應該避免過度 ping 以減少網絡開銷

錯誤處理

  • 超時應該被視為連接失敗
  • 多次 ping 失敗可能觸發連接重置
  • 實現應該記錄 ping 失敗以進行診斷