![]() |
1
19
在我看来,你还没有完全理解WebSockets的概念。例如,你说:
但情况并非如此,套接字有两个方面,您可以将它们视为服务器和客户机,但是一旦建立了连接,区别就变模糊了—您也可以将客户机和服务器视为“对等机”—每个都可以在任何时候写入或读取连接它们的管道(套接字连接)。我怀疑在TCP之上学习更多关于HTTP工作的知识会使您受益匪浅——WebSockets以这种方式类似于/类似于HTTP。 对于soap/wsdl,从围绕tcp/websocket/http的会话的角度来看,您可以将所有soap/wsdl会话视为与http相同(即正常的网页流量)。 最后,请记住网络编程的堆叠性质,例如SOAP/WSDL如下所示:
WebSockets看起来像这样
Hth. |
![]() |
2
3
javascript允许客户机通过HTTP与xmlhttprequest进行通信。WebSockets扩展了此功能,允许javascript进行任意网络I/O(不仅仅是HTTP),这是一个逻辑扩展,允许将需要使用TCP通信(但可能不使用HTTP协议)的各种应用程序移植到javascript。我认为,当应用程序继续向云端移动时,HTML和JavaScript支持桌面上所有可用的东西,这是相当合乎逻辑的。 虽然服务器可以代表JavaScript客户机执行非HTTP网络I/O,并使通过HTTP的通信可用,但这并不总是最合适或最有效的事情。例如,在尝试创建在线ssh终端时,增加额外的往返成本是没有意义的。WebSockets使JavaScript可以直接与ssh服务器通信。 至于语法,它的一部分基于xmlhttprequest。正如另一篇文章所指出的,WebSockets是一个相当低级的API,可以用一个更易于理解的API进行包装。WebSockets支持所有必要的应用程序比它拥有最优雅的语法更重要(有时关注语法会导致更严格的功能)。库作者总是可以让其他应用程序开发人员更容易管理这个非常通用的API。 |
![]() |
3
3
正如你所指出的,websockets 低开销 . 开销类似于普通的TCP套接字:每帧只比Ajax/Comet多两个字节。 为什么是低级的而不是某种内置的RPC功能?一些想法:
为了我 noVNC Project(VNC客户端仅使用javascript、canvas、websockets)websockets的低开销特性对于实现合理的性能至关重要。在VNC服务器包含WebSockets支持之前,NOVNC包含wsproxy,它是TCP套接字代理的通用WebSockets。 如果您正在考虑实现交互式Web应用程序,但还没有决定使用服务器端语言,那么我建议您查看 Socket.IO 哪个是图书馆 node (使用Google的V8引擎的服务器端javascript)。 除了node的所有优点(两边的语言相同、效率很高、电源库等),socket.io还提供了以下几点:
在socket.io上创建一个RPC机制并不难,因为两边都是相同语言,具有相同的本地类型。 |
![]() |
4
1
WebSocket允许来自服务器的请求,从而使Comet和所有其他HTTP推送类型技术清晰易读。它是一种沙盒插座,功能有限。 然而,对于框架和库作者来说,API已经足够通用,可以以他们想要的任何方式改进接口。例如,您可以在WebSockets上编写一些rpc或rmi样式的服务,允许通过网络发送对象。现在在内部,它们以某种未知的格式被序列化,但是服务用户不需要知道也不关心。 所以从规范作者的角度思考,从
到
相对容易,需要在WebSockets周围编写一个小包装器,以便序列化和反序列化对应用程序产生不利影响。但是,相反的方向意味着规范作者需要做一个更复杂的API,这使得在上面写代码的基础较弱。 |
![]() |
5
0
我遇到了同样的问题,我需要做些什么
我已经发表了
|
![]() |
6
0
websocket jsr由多个各方(Oracle、Apache、Eclipse等)协商,所有各方的议程都非常不同。同样,它们在消息传输级别停止,并将更高级别的构造留在外面。如果您需要的是Java到JavaScript RMI,请检查 FERMI Framework . |
![]() |
young · 插座io错误格式错误的箭头函数参数列表[关闭] 3 年前 |
![]() |
June Leow · 跨选项卡使用Web套接字的实时通知栏 3 年前 |
![]() |
garson · 打开Websocket(“消息”)不工作 7 年前 |
![]() |
TomáÅ¡ Zato · 无法连接到套接字io服务器 7 年前 |