对大多数请求使用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
将会更好,它正在与一个巨大的现有工具生态系统合作。
这就是说,如果你需要将数据推送到客户端或进行某种广播等WebSocket
function,可以考虑使用socket.io
而不是AJAX
因为使用AJAX
很难实现这一点, socket.io
提供了这些function。
我会使用ajax,基于http的数据请求,没有任何实时。