javascript - 关于使用哪种技术进行实时通知的建议

标签 javascript html websocket

我有 X 数量的事件传感器连接到服务器,每次触发传感器时都会将数据插入数据库。我想做的是创建一个带有设施蓝图 (svg) 的 Web 界面,每当触发传感器时,除了数据库插入之外,我希望它在我的蓝图中显示某种警报。为此,我认为我需要与服务器保持开放连接。

我正在考虑使用网络套接字,但它可能有点矫枉过正,因为我只需要从服务器检索数据。但是每秒运行一次 ajax 调用听起来也不是很有效。还有其他选择吗?

谢谢

最佳答案

一些可能的选择包括:

  • WebSocket
  • Adobe® Flash® 套接字
  • AJAX 长轮询
  • AJAX 多部分流
  • 永远的 iframe
  • JSONP 轮询

您最终使用哪种实际传输取决于您对浏览器支持的要求以及您在服务器上使用什么技术来处理这些请求。传输选择还可能取决于您的网络拓扑 - 您需要集成哪些类型的负载均衡器、代理等。

客户端和服务器端都有许多可用的库,其中许多库支持不止一种传输。

例如(并非详尽列表):

  • socket.io对于节点
    • WebSocket
    • Adobe® Flash® 套接字
    • AJAX 长轮询
    • AJAX 多部分流
    • 永远的 iframe
    • JSONP 轮询
  • SignalR对于 asp/.net 后端
    • WebSockets
    • 服务器发送的事件
    • 永远的框架
    • 长轮询
  • Atmosphere对于 Java 后端
    • WebSockets
    • 服务器端事件 (SSE)
    • 长轮询
    • 永远的框架
    • JSONP

IMO - Websockets NOT 对这类问题来说是矫枉过正的,并且很适合这种类型的应用程序。

关于javascript - 关于使用哪种技术进行实时通知的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17968272/

相关文章:

html - 打印预览中不显示 CSS 剪辑路径 : why?

javascript - 如何在 php 表中添加选项标签并将选定的值传递给 mysql db 而无需提交按钮?

html - 如何删除 Bootstrap 4 中 Accordion 卡标题的底部边距?

javascript - 对 PHP Websocket 的 PHP 请求

javascript - 在 Javascript 中使用比例调整 div 大小(不使用 Jquery)

javascript - jQuery 模拟 Tab 键 : use keypress event to check for focus and advance to next

Javascript:呈现网页后可以动态呈现哪些 Document 对象属性?

javascript - 如何在智能手机浏览器中获取表格 html 的全宽?

javascript - 为什么我的 websocket php+javascript 代码不起作用?

javascript:带有回调和 'this' 的原型(prototype)