我在服務器端使用socket.io和nodejs來提供我的Web應用程序和服務器之間的雙向通信。使用Web套接字時的請求/響應「語言」設計
我正在使用socket.io API發出命令並接收響應,但我不確定是否有更有條理的方法來定義將語法發送到服務器並從服務器接收結果的「語言」。
發送命令到服務器,我發射從Web應用程序的事件,如下面的(下面我使用僞代碼):
socket.emit('commandRequest', {
msg_id: '...'
username: '...',
command: '...'
});
服務器評估該命令併發出像如下響應:·
socket.on('commandRequest', (data) => {
// parse and execute data.command
socket.emit('commandResponse', {
msg_id: data.msg_id,
username: data.username,
response: ...,
error: ...
});
})
最後,Web應用程序監聽來自服務器的響應,並相應地更新應用內容:
socket.on('commandResponse', (data) => {
if (data.error) {
...
} else {
// interpret data.response
}
})
因此,我使用commandRequest/commandResponse事件命名範例,事件數據結構具有相應的{command: ...}
和{response: ...}
屬性。
是否有更正式的方式來定義可用於更復雜的客戶端/服務器交互的請求/響應「語言」?類似於REST API通過HTTP請求實現的功能,但使用Web套接字?