对大多数请求使用socket.io是不是很好,或者我应该只用它来将数据推送到客户端?

replaceAJAX路由(用jquery中的$ .Ajax调用)是不好的,比如:

  • GET /动物
  • GET / animals / [id]
  • POST /动物

使用socket.io事件(绑定在客户端和服务器上的事件,客户端可以有响应):

  • 发射(“动物:读”)
  • 发出(“动物:读”,{id:asdasd})
  • 发出(“动物:写”,animalData)

或者我应该“只”使用socket.io它将数据推送到客户端?

[编辑]我可以看到一个问题,如果我不使用套接字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) }) 

我肯定会在其他一些请求中将数据推送到客户端,所以所有的客户端将至less有一个套接字。

恕我直言socket.io应该使用,如果你想为您的网站提供实时数据。 以Stackoverflow为例。 它使用websocket实时更新您的分数并更新您的通知。

但是,如果你真的想创build适合search引擎优化的应用程序(我的意思是支持http服务你的网页),更重要的是,如果你知道在socket.iopipe理会话和权限的困难,我想你更喜欢AJAX为您的网页和其他实时数据的socket.io

如果您不想将数据推送到客户端,我不明白为什么要使用socket.io而不是AJAX 。 我的意思是用AJAX你不需要处理与客户端的会话,它可能会更好。

使用socket.io ,对于每个连接的客户端,您需要在服务器上与该客户端配对的某种对象。 如果永久连接是不必要的或不需要的,它将在服务器上使用更多的内存。

另外,如果您想要与其他系统重用您的代码,那么AJAX将会更好,它正在与一个巨大的现有工具生态系统合作。

这就是说,如果你需要将数据推送到客户端或进行某种广播等WebSocketfunction,可以考虑使用socket.io而不是AJAX因为使用AJAX很难实现这一点, socket.io提供了这些function。

我会使用ajax,基于http的数据请求,没有任何实时。