node.js – Socket.io和RESTFul如何协同工作?

(我对RESTFul不熟悉,如果我的概念错了,请纠正我)

在RESTFul体系结构中,我们将每个操作映射到URL.如果我点击“发表文章”,它可能实际上是URL http://example.com/,而某些数据操作= post& content = blahblah.

如果我想发布,但不刷新整个网页,我可以使用javascript的XMLHTTPRequest.我发布它,然后得到它的内容,并将其插入我的页面中的div.这些操作都是异步的.

然后我知道有一些名为WebSocket的东西,它是包装器socket.io.它使用“消息”在客户端和服务器之间进行通信.当我点击“发布”时,客户端只需调用socket.send(data)并等待服务器的client.send(data).这太神奇了.但是URL怎么样?

可以在不重复自己的情况下使用这两种模型吗?换句话说,每个动作都有它的URL,其中一些可以实时与用户交互(通过socket.io?)

而且,我应该这样做吗?在一个非常互动的网络程序(例如游戏)中,RESTFul仍然有意义吗?

解决方法

您正在为通过http映射到REST的操作定义处理程序. POST和GET通常指的是对实体的更新和查询.绝对没有理由你不能只为这两个上下文中使用的CRUD操作的泛型版本定义处理程序.我通常这样做的方法是向实时传输引入“路由”的概念,并将它们映射回相同的CRUD处理程序.

你有一个会话,你可以施加相同的ACL等.

 +---------------------------------+
 |                                 |
 |      broWSER                    |
 |                                 |
 +--+--^-------------------+---^---+
    |  |                   |   |
    |  |                   |   |
 +--v--+---+            +--v---+---+
 |         |            |          |
 | HTTP    |            | SOCKET.IO|
 +--+---^--+            +--+---^---+
    |   |                  |   |
 +--v---+------------------v---+---+
 |                                 |
 |        ROUTING/PUBSUB           |
 +-+--^-------+--^-------+--^------+
   |  |       |  |       |  |
 +-v--+--+  +-v--+--+  +-v--+-+
 |       |  |       |  |      |
 | USERS |  | ITEMS |  |ETC   |
 +-------+  +-------+  +------+
     ENTITY CRUD HANDLERS

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...