当前位置: 首页 > 面试题库 >

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

祁博雅
2023-03-14
问题内容

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

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

如果我要发布而不是刷新整个网页,则可以使用javascript的XMLHTTPRequest。我发布它,然后获取它的内容,并将其插入到页面的div中。这些动作都是异步的。

然后我知道有一个名为的东西WebSocket,它是包装器socket.io。它使用“消息”在客户端和服务器之间进行通信。当我单击“发布”时,客户端将呼叫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


 类似资料:
  • 问题内容: 我正在使用socket.io,并且安装迅速(这要归功于其用法页面上的示例),但我想了解有关幕后到底发生了什么以及使它起作用的技术的更多信息。 socket.io的确切机制是什么? 是在端口80上还是在另一个端口上? 它真的保持打开状态还是被模拟了? 有没有一种方法可以分析每个套接字事件?(有点像使用提琴手来查看ajax调用中会发生什么) 问题答案: 为了进行调试,您可能需要尝试 The

  • 问题内容: 一个星期以来,我一直在思考Webmachine应用程序中Redis使用的问题。而且我还没有开悟。 我将使用Eredis,这是用法示例: 据我了解,应该只在某个地方调用一次。但是,如何获得资源的可变性呢? 问题答案: 有几种解决方案: 在本地或全局注册Redis连接 使用gproc之类的进程寄存器 将连接的pid保留在webmachine资源上下文中 使用连接池,例如pooler或poo

  • 问题内容: Django的新手,ReactJS的新手。我一直在研究AngularJS和ReactJS,但是决定使用ReactJS。尽管AngularJS拥有更多的市场份额,但它似乎正在逐步超越AngularJS的知名度,并且据说ReactJS更快地被接受。 撇开所有垃圾,我开始学习Udemy的课程,并看了几段视频后,查看它与Django的集成程度似乎很重要。那就是当我不可避免地碰壁只是要启动并运行

  • 问题内容: 运行代码时出现该错误。好的,很好-我只是忘记了获取XMLBeans …,但是它已经退休了,我在他们的档案中找不到最新版本。因此,我发现JAXB可以替代,我下载了JAXB并尝试将jar文件添加到Intellij的库中,但是在寻找XMLBeans依赖项时仍然遇到相同的错误。 如何获得Apache POI以使用JAXB代替XMLBeans?为什么JAXB有7种不同的jar文件,而我却找不到它

  • 我不明白为什么第一个例子有效,但第二个不有效。我相信这与调用json将响应解析为javascript对象有关?那么它返回一个promise,必须放在一个然后函数中?我得到这个是因为在第三个例子中抛出的错误。#json到底是做什么的?

  • 如何让jersey和@webservlet协同工作? 泽西资源配置: 在resourceConfig中注册的jersey资源: web servlet 案例1:访问此http://localhost:8088/ResponseFilterweb/login 控制台日志: 访问这个http://localhost:8088/ResponseFilterweb/hello 案例2:更改应用程序配置资源