为什么Javascript对Websocket很重要?

为什么Javascript对Websocket很重要?,websocket,Websocket,这似乎是一个奇怪的问题,但我真的很困惑,因为下载时我想:好的,我运行它,它会工作的!但问题是,它不起作用,因为我在脱机模式下测试,并且缓存中没有jQuery 并发现: Ajax-创建到服务器的连接发送一些数据(简化为get/post)并接收响应 长轮询-创建到服务器的连接,发送一些数据,保持连接,有时从服务器接收一些数据。短时间保持连接,并定期重新连接。在服务器端,它仍然像网页一样处理 WebSockets-创建到服务器的连接,并根据需要保留。服务器或客户端可以轻松地阻止它。双向发送数据。Web

这似乎是一个奇怪的问题,但我真的很困惑,因为下载时我想:好的,我运行它,它会工作的!但问题是,它不起作用,因为我在脱机模式下测试,并且缓存中没有jQuery

并发现:

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

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

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


那么,为什么即使是与服务器端相关的东西,也总是有Javascript存在呢?

Javascript最初是一种向网页添加客户端表单验证和少量动态用户交互的方法。然而,现代Javascript是一种功能非常强大的语言(也有很多麻烦),可以在浏览器或服务器上运行(使用类似的工具)。现代浏览器提供了许多只适用于Javascript的API(除非和直到另一种语言如Dart得到普遍支持),如Web Workers、Canvas、Web GL、Web音频API、XMLHTTPRequest(即AJAX)、计时器、事件等

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

在这种情况下,WebSocket是浏览器中的API,它使web应用程序(即在浏览器中运行的Javascript程序)能够与WebSocket服务器建立低延迟双向通信通道

更新

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

  • Javascript不仅仅适用于web(例如Node.js),这些API也不仅仅适用于Javascript。例如,如果您有一个启用了Dart的Chrome版本,那么这些API也可以从Dart获得。脚本标记允许使用其他语言,因此未来的浏览器可能会运行可以访问这些API的其他语言
  • Javascript是由定义的语言,WebSocket、Web Workers等是由定义为HTML5一部分的浏览器API。浏览器版本决定了哪些web API可用,以及Javascript的版本。您可能有一个带有支持新API的旧版本Javascript的浏览器,反之亦然

  • JavaScript仅在浏览器中对WebSocket很重要,因为浏览器已经在JavaScript中实现了WebSocket API(请参阅RFC 6455)。因此,如果您想从HTML5页面中访问WebSocket,则需要编写JavaScript。但是,您也可以使用Java小程序在Java客户机中执行WebSocket。(尽管小程序已经不受欢迎了。)此外,还可以从本地应用程序(包括移动iOS)创建WebSocket

    许多WebSocket服务器平台尝试支持多种类型的客户端。例如,Kaazing不仅以JavaScript提供客户机,还以.NET、Silverlight、Java和Objective-C提供客户机。WebSocket的基本思想是只需编写一次服务器逻辑,就可以“收获”在不同客户机中所做的工作


    请记住,如果您要使用WebSocket,您将需要一种编程语言,而不是基本的HTML标记,因为您需要处理通过WebSocket连接传入的数据。这些数据可以通过许多不同的协议来获取,如AMQP、STOMP、socket.IO、WAMP和许多其他协议。对于每种类型的协议,您实际上需要一个不同的库来处理协议

    为什么是javascript?最后一次可以用纯HTML编写
    for()
    循环是什么时候?您最后一次可以定义数组并用HTML对该数组执行推送/弹出操作是什么时候?我认为这些操作是使用服务器端语言处理的,然后转换为纯HTML?不。客户端浏览器究竟如何从服务器请求某些内容(用户单击链接或提交表单除外)没有javascript?很抱歉,我是初学者,从我过去的理解来看:javascript是用于释放服务器的程序,python(例如)是用于在服务器上做繁重的工作。我在互联网上的形象是简单的请求-响应,当读到关于websocket的文章时,我试图阅读tornado的例子,但没有发现事情发生的地方,也不知道我必须阅读javascript文件!除了异常情况(如node.js设置),javascript在客户端浏览器中运行,基本上与服务器无关。除了从该服务器加载并能够与之对话之外。啊,谢谢你,那么为什么他们不说这样的话:websocket在javascript版本x.xx中是新东西,所以像我这样的人会理解:p@AbdelouahabPp好问题!我已经更新了答案以反映这一点。所以它是HTML版本的Javascript,感谢您的澄清:)谢谢,我将尝试使用tornado学习它,它有websocket,而且似乎有一些库与tornado一起使用来简化websocket?看起来tornado有一个基本的websocket类处理程序:tornado.websocket.WebSocketHandler,那就是