为什么Javascript对Websocket很重要?

时间:2012-12-03 14:55:26

标签: websocket

这似乎是一个奇怪的问题,但我真的很困惑,因为当下载this example from Tornado我认为:okey,我运行它,它会工作!但问题是,它是dident工作,因为我在离线模式下测试过,并且dident在缓存中有jQuery!

找到this from SO

  

Ajax - 创建与服务器的连接发送一些数据(简化为get / post),并接收响应。

     

长轮询 - 创建与服务器的连接,发送一些数据,保持连接并有时从服务器接收一些数据。连接保持很短的时间,并定期重新连接。在服务器端,它仍像Web页面一样处理。

     

WebSockets - 创建与服务器的连接,并根据需要保留。服务器或客户端可以轻松制动它。双向发送数据。 WebSockets通常对每条消息使用屏蔽,因此数据只是加密。

那么,为什么总是有Javascript,甚至它与服务器端有关?

2 个答案:

答案 0 :(得分:4)

JavaScript仅对浏览器中的WebSocket很重要,因为浏览器在JavaScript中实现了WebSocket API(参见RFC 6455)。因此,如果要从HTML5页面访问WebSocket,则需要编写JavaScript。但是,您也可以使用Java Applet在Java客户端中执行WebSocket。 (虽然applet已经失宠了。)此外,还可以从本机应用程序(包括移动iOS)执行WebSocket。

许多WebSocket服务器平台尝试支持多种类型的客户端。例如,Kaazing不仅为JavaScript提供客户端,还为.NET,Silverlight,Java和Objective-C提供客户端。 WebSocket的基本思想是你编写一次服务器逻辑,然后你可以“收获”你在各种不同客户端所做的事情。

请记住,如果您要进行WebSocket,则需要一种除基本HTML标记之外的编程语言,因为您需要处理通过WebSocket连接传入的数据。该数据可以通过许多不同的协议来实现,例如AMQP,STOMP,socket.IO,WAMP和许多其他协议。对于每种类型的协议,您实际上需要一个可以处理协议的不同库。

答案 1 :(得分:3)

Javascript开始时是一种向网页添加客户端表单验证和少量动态用户交互的方法。但是,现代Javascript是一种非常强大的语言(也有许多烦恼),可以在浏览器或服务器上运行(使用Node.js之类的东西)。现代浏览器提供了许多仅适用于Javascript的API(除非并且直到普遍支持像Dart这样的其他语言),例如Web Workers,Canvas,Web GL,Web Audio API,XMLHTTPRequest(即AJAX),计时器,事件等等。

浏览器的旧概念是能够下载和呈现静态HTML标记文档的程序。现在将浏览器视为主要用于执行Web应用程序的操作系统+库+ API更为有用。换句话说,现代Web浏览器的主要目的是执行Javascript并为Javascript提供API。 HTML的主要目的是指定要加载的初始Javascript文件以启动Web应用程序。 HTML和CSS也可用于定义DOM树的初始状态(Javascript API的可见部分)。但是,您可以使用HTML和CSS静态指定的所有内容也可以使用Javascript动态生成。

在该上下文中,WebSockets是浏览器中的一种API,它使Web应用程序(即在浏览器中运行的Javascript程序)能够与WebSocket服务器建立低延迟的双向通信通道。

<强>更新

为什么他们不说“WebSockets在Javascript版本x.x.x中可用”?

  1. Javascript不仅适用于网络(例如Node.js),而且这些API不仅适用于Javascript。例如,如果您的Chrome版本启用了Dart,则Dart可以使用这些相同的API。脚本标记允许使用其他语言,因此未来的浏览器可以运行其他可以访问这些API的语言。
  2. Javascript是由ECMA,WebSockets,Web Workers等定义的语言,是由W3C作为HTML5的一部分定义的浏览器API。浏览器版本确定可用的Web API以及Javascript的版本。您可能拥有一个支持新API的旧版Javascript浏览器,反之亦然。
相关问题