我正在为朋友建立一个小型聊天应用程序,但不确定如何及时获取信息,而不是手动或基本上强制刷新页面.
目前,我正在使用简单的AJAX实现这一点,但这有一个缺点,即当一个短计时器过去时经常点击服务器.
在研究长/短轮询时,我遇到了HTML5 WebSockets.这似乎很容易实现,但我不确定是否存在一些隐藏的缺点.例如,我认为WebSockets仅受某些浏览器的支持.我应该注意WebSockets还有其他缺点吗?
既然两种技术似乎都做同样的事情,那么在哪种情况下,人们更愿意使用其中一种?更具体地说,HTML5 WebSockets使AJAX长/短轮询过时,还是有令人信服的理由更喜欢AJAX而不是WebSockets?
我将开发一个在浏览器中运行的即时消息应用程序.
哪些浏览器支持WebSocket API?
javascript html5 network-programming web-applications websocket
我正在学习HTTP/2协议.它是一个带有小消息帧的二进制协议.它允许通过单个TCP连接进行流复用.从概念上讲,它似乎与WebSockets非常相似.
是否有计划废弃websockets并用某种无头HTTP/2请求和服务器启动的推送消息替换它们?或者WebSockets是否会补充HTTP/2?
虽然我理解上述问题的答案在某种程度上取决于您的应用程序的架构,但我主要对非常简单的场景感兴趣.
基本上,如果我的应用程序每隔5秒钟进行一次ping更改,或者每分钟一次,那么为什么要发送的数据保持打开的Web套接字连接最终会超过简单轮询所浪费的数量?
基本上,我感兴趣的是,如果应用程序不一定需要实时更新,而只是定期检查,那么通过使用像Meteor这样的框架可以量化多少效率.
请注意,我的重点是带宽利用率,而不一定是数据库访问时间,因为像Meteor这样的框架具有高度优化的方法,只请求更新数据库.
在JavaScript(客户端)+ PHP(服务器)网站中,我有这个方案用于将" online notepad"(在#textboxtextarea中)保存到服务器:
// client-side
$("#save-button").on('click', save);
function save(e) {
$.ajax({ type: "POST",
url: "/php/save.php",
data: { projectname: $('#projectname').text(),
data: $('#textbox').text() },
success: function(data) { alert('Data saved'); },
error: function(data) { console.log(data); } });
}
Run Code Online (Sandbox Code Playgroud)
这在服务器端(/php/save.php):
<?php
$projectname = $_POST['projectname'];
$data = $_POST['data'];
// save this into database
?>
Run Code Online (Sandbox Code Playgroud)
node.js(客户端+服务器)中等效的"post to server and save on server"方案是什么?(express例如使用)
这个任务有一个众所周知的node.js" pattern"吗?
$.ajax(...)在客户端和服务器上的node.js上使用是常见/良好的做法吗?我认为node.js引入了一种新的思维方式,不再需要ajax ......我错了吗?
通过HTTP 2.0,Websocket与AJAX之间的真实性能差异是什么?
特别是,我正在开发的项目需要双向实时更新,因此,尽管非标准,如果只在域内进行请求,则通过Websocket而不是AJAX执行REST可能更有效.
但是,我不确定当前有关性能差异的可用信息是否适用于HTTP 2.0.
我们正在寻找一种简单的方法来持续更新 HTML 表 (SPA)以显示收到的“订单”。目前,我们每次想要查看新订单时都必须刷新页面。以我有限的前端知识,我可以想到3种方法来做到这一点。我将不胜感激关于最佳方法的建议:
1- 定期(每 10 秒?)发出 AJAX 请求,然后让 JS 框架(Vue 或 React)更新表。
2- 使用 WebSocket(而不是 HTTP)使服务器能够在收到此类新订单时推送数据。
3- 使用通知服务:后端向客户端浏览器订阅的主题发送通知。这会触发前端框架中的一些代码从服务器请求新订单。那可行吗?
同样,我对前端框架(VueJS、React)可以或不能做什么的了解非常有限。我不希望这成为一个完整的项目。我们只是在为(希望如此!)非常常见的用例寻找一个简单的解决方案。谢谢你。
我设置了一个 Node.js HTTP 服务器。它监听路径“/”并在 get 请求上返回一个空的 HTML 模板。
该模板包含 Require.js 客户端脚本,该脚本创建与服务器的 Socket.IO 连接。
那么客户端和服务器之间的所有通信都是由 Web Sockets 提供的。
连接时,服务器需要身份验证;如果有身份验证 cookie,则客户端将它们发送到服务器进行验证,如果没有 cookie,则客户端呈现登录视图并等待用户输入等。
到目前为止,一切正常,在验证凭据后,我为用户创建一个 SID 并使用它来管理他的访问权限。然后我渲染主视图并启动应用程序。
问题:
由于我只使用 HTTP 向客户端发送脚本,是否需要使用 HTTPS 而不是 HTTP?(注意:我打算使用本地存储而不是cookie)
使用没有 HTTP 的纯 Web 套接字有什么缺点吗?
如果它有效,为什么没有人使用它?
我有一个单页应用程序,当前使用ajax和REST与服务器进行通讯。我主要使用Promise和Deferreds构建代码,并使用pubsub代理在组件之间进行通信。通常,代码的结构遵循Zakas关于可伸缩应用程序体系结构的建议。
我想将与服务器的至少某些交互移动到websocket中,以提高性能并简化开发。我打算更改为使用Websocket的一些特定交互方式是:
我的问题是:
谢谢。
编辑
Hera是我提交此书后发现的一些相关问题。这些与我的问题的最后一部分最紧密地联系在一起(100%的websocket是否有意义)。
背景
我们正在编写一个类似 Messenger 的应用程序。我们已经将 Websockets 设置为 Inbox 和 Chat。
题
我的问题很简单。使用 REST 而不是 Websockets将数据从客户端发送到服务器时有什么优点和缺点?(我现在对更新不感兴趣。)
我们知道 REST 在消息大小方面具有更高的开销,并且 WS 是双工的(因此始终开放)。其他我们没有记住的事情呢?
我正在开发一个Firefox插件,它将检索并发送数据到http服务器,但我有一些问题,如何做到这一点.该插件将检测用户所在的当前URL并自动从http服务器获取与该页面相关的数据(评论,分数等)(后者又从MySQL服务器获取它们).该插件还具有文本字段,用户可以在其中提交自己的评论并对当前网站进行评级.
到目前为止,我只编写了插件的布局和行为(JavaScript).服务器尚未实现.
某些用户输入需要在插入数据库之前通过服务器进行评估.因此客户端需要连接到此http服务器以发送数据.
我在网上搜索并找到了一些例子,但它们似乎都不像我想做的那样.我第一次尝试这样做,我不确定如何处理这个问题.
我想我的第一个问题是,是否有任何常见的技术可以为Firefox插件执行此操作?如果没有,AJAX和jQuery是一种可行的方法吗?我读了一些关于Socket.io和Node.js的东西,那些呢?
我不是在寻找代码,而是寻找如何做到这一点的指导和建议.这是我第一次参加这样的项目,如果我在这篇文章中遗漏了任何细节,请告诉我.
从几天开始,我一直在搜索社交网络或问答网站如何获得实时通知。我开始了解订阅者-发布者模式。我开始知道实时更新是使用 WebSockets 获取的。Websocket 发布一个端点,客户端订阅该端点并不断获取任何更改的更新。
但是我从网上得到的例子都是聊天应用程序。但我的要求是从 MySQL DB 获取实时通知。所以我有几个问题
如果我的模式是对的,我不知道如何将 WebSocket 连接到 Mysql。任何帮助/指导都非常感谢。
更新:
经过一些更多的网络搜索:
1. 由于我正在为我的网站创建 Rest Webservices,AJAX 是实现通知功能而不是 WebSockets 的更好方法吗?
2. WebSockets 的实现是否比击中 Rest 端点的 AJAX 调用复杂(因为两者的目的是相同的,以获得通知)?