替换AJAX路由(用jquery中的$ .Ajax调用)是不好的,例如:
使用socket.io事件(在客户端和服务器上绑定事件,以便客户端可以获得响应):
或者我应该“仅”使用socket.io将数据推送到客户端?
[编辑] 如果我不使用socket io作为我的POST路由,我可以看到一个问题。问题是我无法轻松使用客户端套接字来广播数据:
服务器:
on("animals:write", function(data){
saveAnimal(req.data)
socket.broadcast(...)
emit("animals:write", writenAnimal)
})
VS
app.post(function(req,res){
saveAnimal(data)
// cant broadcast :(
res.send(201,writenAnimal)
})
我会在其他一些请求中将数据推送到客户端,所以所有客户端都至少有1个套接字。
答案 0 :(得分:1)
如果您不想将数据推送到客户端,我不明白您为什么要使用socket.io
而不是AJAX
。我的意思是AJAX
你不需要处理与客户端的会话,它可能会更好地扩展。
对于socket.io
,对于每个连接的客户端,您需要服务器上的某种对象与该客户端配对。如果不必要或不需要永久连接,它将无缘无故地在服务器上使用更多内存。
此外,如果您希望将代码重新用于其他系统,AJAX
会更好,它正在使用庞大的现有工具生态系统。
话虽如此,如果您需要WebSocket
功能,例如将数据推送到客户端或进行某种广播,您可以考虑使用socket.io
代替AJAX
,因为它将是很难通过AJAX
和socket.io
提供这些功能来实现这一目标。
答案 1 :(得分:1)
如果您想要为您的网站提供实时数据,请使用恕我直言socket.io
。以Stackoverflow为例。它使用websocket实时更新您的分数并更新您的通知。
但是如果你真的想要创建SEO友好的应用程序(我的意思是支持http
来提供你的页面),如果你意识到在socket.io中管理会话和权限的困难,那就更重要了,我认为您的网页更喜欢AJAX
而其他实时数据更喜欢socket.io
。
答案 2 :(得分:0)
我会使用ajax,基于http的数据请求,没有实时。