微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐