首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Web套接字时的请求/响应“语言”设计

使用Web套接字时的请求/响应“语言”设计
EN

Stack Overflow用户
提问于 2016-10-13 00:05:08
回答 1查看 43关注 0票数 0

我在服务器端使用socket.io和nodejs来提供我的web应用程序和服务器之间的双向通信。

我正在使用socket.io应用程序接口发出命令和接收响应,但我不确定是否有更有条理的方法来定义用于向服务器发送命令和从服务器接收结果的“语言”。

为了向服务器发送命令,我从web应用程序发出如下事件(我使用下面的伪代码):

代码语言:javascript
运行
复制
socket.emit('commandRequest', {
                msg_id: '...'
                username: '...',
                command: '...'                    
});

服务器评估命令并发出如下响应:

代码语言:javascript
运行
复制
socket.on('commandRequest', (data) => {
    // parse and execute data.command

    socket.emit('commandResponse', {
        msg_id: data.msg_id,
        username: data.username,
        response: ...,
        error: ...
    });
})

最后,web应用程序侦听来自服务器的响应,并相应地更新应用程序内容:

代码语言:javascript
运行
复制
socket.on('commandResponse', (data) => {
    if (data.error) {
        ...
    } else {
        // interpret data.response
    }
})

所以我使用了commandRequest/commandResponse事件命名范例,事件数据结构具有相应的{command: ...}{response: ...}属性。

有没有一种更正式的方式来定义请求/响应“语言”,用于更复杂的客户端/服务器交互?与REST API使用HTTP请求实现的功能类似,但使用的是web套接字?

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 17:20:08

您可以尝试查看Primus及其Responder插件,如本文所述:Request-Response Oriented Websockets

帖子节选如下:

它允许使用其他库中已知的简单API向对方请求响应。

Primus Responder在Primus的核心功能上增加了两件事:

  1. 一个名为request的新事件在对等体请求响应时立即发出。
  2. 名为writeAndWait(data, fn)的新方法将数据写入对等体,并在对等体发送其响应时运行给定的回调函数。

Primus Responder在客户端也可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40003253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档