Socket.io和RESTFul如何一起工作?

| (我对RESTFul不熟悉,如果我的概念有误,请更正我) 在RESTFul体系结构中,我们将每个操作映射到URL。如果我单击“发布文章”,实际上它可能是URL
http://example.com/
和一些数据
action=post&content=blahblah
。 如果我要发布而不是刷新整个网页,则可以使用javascript \的XMLHTTPRequest。我发布它,然后获取它的内容,并将其插入到我页面的div中。这些动作都是异步的。 然后我知道有一个名为
WebSocket
的东西,它是包装
socket.io
。它使用“消息”在客户端和服务器之间进行通信。当我单击\“ post \”时,客户端仅呼叫
socket.send(data)
,然后等待服务器的
client.send(data)
。太神奇了。但是URL呢? 是否可以同时使用两个模型而不重复我自己?换句话说,每个动作都有它的URL,其中一些可以与用户实时交互(通过socket.io?) 此外,我应该这样做吗?在一个非常互动的Web程序(例如游戏)中,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
    
        我最近在博客上发布了此内容: 设计用于WebSockets的CRUD API 在构建Weld时,我们同时使用REST和WebSockets(Socket.io)。 WebSockets的三个观察结果: 由于WebSockets的格式如此自由,您可以根据需要命名事件,但最终将无法调试。 WebSocket没有HTTP的请求/响应形式,因此有时很难分辨事件的来源或去向。 如果WebSockets可以适合应用程序中现有的MVC结构,最好使用与REST API相同的控制器,那就太好了。 我的解决方案: 我的服务器上有两个路由文件:路由-rest.js和路由-sockets.js 我的事件如下例所示:
\"AppServer/user/create\"
。 我使用正斜杠(“ /”)使事件看起来像路由路径。 第一个字符串是目标(如果实际上是路径,则为〜“主机名”)。 第二个字符串是模型。 第三个字符串是CRUD动词:即创建,读取,更新,删除。     

要回复问题请先登录注册