有两种形式:
- 资源列表变化
- 资源内容变化
资源列表变化
用于监听资源目录是否发生增删改。
工作机制
当服务器上的资源列表发生变化时(例如 resources/list
中的项发生增删),服务器主动发送通知:
notifications/resources/list_changed
这个方法名也是固定的。
这样客户端就知道资源目录发生了变动,可以重新发起 resources/list
重新拉取。
这里需要做 2 件事情:
- 监听目录(涉及到回调函数,监听的目录发生了变化,就会触发对应的回调函数)
- 回调函数:向客户端发送通知
资源内容变化
用于监听 某个资源内容的变更,如文件内容更新、数据库记录修改、日志追加等。
工作机制
-
客户端订阅更新,向服务器发送请求:
resources/subscribe
方法名固定为
resources/subscribe
,表示我要订阅某个资源。带上要订阅的资源 URI,例如:
{ "uri": "file:///logs/error.log" }
-
服务器监听变动并通知客户端。当该资源发生变化时,发送通知:
notifications/resources/updated
-
客户端拉取最新内容。收到通知后,客户端可以重新调用:
resources/read
-
客户端取消订阅(可选)。如果客户端不再关心此资源,可以发送:
resources/unsubscribe