使用 AJAX 或 Socket.io 自动完成?

yzh*_*han 3 ajax node.js socket.io

我正在使用 Node.js 和 Express 构建一个搜索应用程序,并且我想添加自动完成功能。之前我使用 Socket.io 构建了一个聊天应用程序,所以我首先想到的是 Socket.io。

但我做了一些研究,看起来很多人都在使用 AJAX 进行自动完成,那么这两种实现之间有什么区别呢?

我对 TCP 和 HTTP 协议没有太多经验,所以我真的很感谢菜鸟们的清晰简单的答案:)

Ale*_*aru 5

首先,您的用例是创建自动完成功能。那意味着什么?这意味着当您在输入字段中插入字母时,您将请求服务器包含您想要查找的术语以接收所有自动完成值。

作为开发人员,当您阅读此功能详细信息时,您应该记住event我们案例中的“keypress事件”一词。因此,每次触发此事件时,您都希望请求服务器获取自动完成列表。你有什么可能性可以做到这一点?

这种类型的场景首先最常用的是一个简单的ajax调用,它将发送一个请求,完成后将使用相应的详细信息更新自动完成功能。正如我们在本例中看到的那样,对于输入的每个字母,都可能会提出请求(通常您可以实施 a debounce function)以减少调用次数。这里好的想法是,一旦收到详细信息,您将关闭连接,并且有数百万个插件可以jquery很好地做到这一点。

第二种方法是使用socket.io这也是一个可行的选项,您将打开一次连接,并且对于每个连接,keypress event您将发出您的获取详细信息,这通常会更快,因为您将重用现有连接。这里的缺点是你需要自己创建它,我不知道有任何使用autocompletesocket.io 实现的插件。

结论

Socket.io

  • 由于重用现有连接,速度更快
  • 更多的体力工作,很少的插件|扩展
  • socket.io适合您已经在应用程序上使用的情况
  • 仅仅为了自动完成功能就太过分了

阿贾克斯

  • 较慢socket.io
  • 大量的插件
  • 总的来说对于这个用例来说是一个很好的解决方案。