如何在 Express 应用中正确使用 socket.io
How to use socket.io properly with express app
我想知道如何在我的 Express 应用程序中正确使用 socket.io。
我有一个用 express/node.js 编写的 REST API,我想使用 socket.io 为我的应用程序添加实时功能。考虑一下我想做一些我可以通过向我的 REST API 发送请求来做的事情。我应该用 socket.io 做什么?我应该向 REST API 发送请求并向 socket.io 客户端发送过程结果,还是在 socket.io 发射器中处理整个过程,然后将结果发送给 socket.io 客户端?
提前致谢。
问题不是很清楚,但从我得到的信息来看,你想知道你会用它做什么,而你目前的 API 无法做到这一点?
简短的回答是,其实没什么。Websockets 只是 API 的自然发展,并且需要更多 'real-time' 系统之间的接口。
旧方法(仍在使用并且与正确的用例相关)是长时间轮询,您不断检查服务器是否有更新的项目,如果是,则抓住它们。这可行,但就以下方面而言可能很昂贵建立连接,执行查找,然后关闭连接。
websockets 保持连接打开,允许客户端和服务器实时通信。因此,例如,假设您对后端数据进行了更新并希望用户获得该更新,使用长轮询您将依赖每个客户端 ping 回服务器,检查是否有更新,如果有则获取它。这可能会导致更新之间的延迟,一些用户更新了数据而其他人没有等。
现在,采用与 websockets 相同的场景,您对后端数据进行更新,点击提交,然后发送到您的套接字服务器。套接字服务器接听电话,执行任务(获取更新的数据)并将其发送给用户,每个连接的用户立即获得该更新。
套接字服务器通常用于实时聊天或轮询等数据包较小的事情,但它们也用于网络游戏等。根据有效负载的大小,将决定如何最好地来回发送数据,因为负载越大,套接字服务器占用的资源/带宽就越多,因此需要考虑。
我想知道如何在我的 Express 应用程序中正确使用 socket.io。
我有一个用 express/node.js 编写的 REST API,我想使用 socket.io 为我的应用程序添加实时功能。考虑一下我想做一些我可以通过向我的 REST API 发送请求来做的事情。我应该用 socket.io 做什么?我应该向 REST API 发送请求并向 socket.io 客户端发送过程结果,还是在 socket.io 发射器中处理整个过程,然后将结果发送给 socket.io 客户端?
提前致谢。
问题不是很清楚,但从我得到的信息来看,你想知道你会用它做什么,而你目前的 API 无法做到这一点?
简短的回答是,其实没什么。Websockets 只是 API 的自然发展,并且需要更多 'real-time' 系统之间的接口。
旧方法(仍在使用并且与正确的用例相关)是长时间轮询,您不断检查服务器是否有更新的项目,如果是,则抓住它们。这可行,但就以下方面而言可能很昂贵建立连接,执行查找,然后关闭连接。
websockets 保持连接打开,允许客户端和服务器实时通信。因此,例如,假设您对后端数据进行了更新并希望用户获得该更新,使用长轮询您将依赖每个客户端 ping 回服务器,检查是否有更新,如果有则获取它。这可能会导致更新之间的延迟,一些用户更新了数据而其他人没有等。
现在,采用与 websockets 相同的场景,您对后端数据进行更新,点击提交,然后发送到您的套接字服务器。套接字服务器接听电话,执行任务(获取更新的数据)并将其发送给用户,每个连接的用户立即获得该更新。
套接字服务器通常用于实时聊天或轮询等数据包较小的事情,但它们也用于网络游戏等。根据有效负载的大小,将决定如何最好地来回发送数据,因为负载越大,套接字服务器占用的资源/带宽就越多,因此需要考虑。