Java 如果您不编写web应用程序,并且您的客户端不是浏览器,那么web套接字相对于常规套接字的优势是什么?

Java 如果您不编写web应用程序,并且您的客户端不是浏览器,那么web套接字相对于常规套接字的优势是什么?,java,c++,sockets,networking,websocket,Java,C++,Sockets,Networking,Websocket,有一些关于WebSocket和Stackoverflow套接字之间差异的文献。我想理解的是,为什么我要在正常的套接字上选择Web套接字,如果我编写的是一个普通的客户机/服务器应用程序,服务器不一定是一个Web服务器,连接到服务器的客户机是本地C++或java客户机。 如果你必须处理浏览器,那么如果我不需要支持浏览器,那么我应该考虑使用WebSosits吗? 编辑: 更清楚地说明我的问题:如果WebSocket早就存在,那么在使用unix域套接字的unix工具中,或者在IPC上下文中使用套接字的任

有一些关于WebSocket和Stackoverflow套接字之间差异的文献。我想理解的是,为什么我要在正常的套接字上选择Web套接字,如果我编写的是一个普通的客户机/服务器应用程序,服务器不一定是一个Web服务器,连接到服务器的客户机是本地C++或java客户机。 如果你必须处理浏览器,那么如果我不需要支持浏览器,那么我应该考虑使用WebSosits吗? 编辑:


更清楚地说明我的问题:如果WebSocket早就存在,那么在使用unix域套接字的unix工具中,或者在IPC上下文中使用套接字的任何其他上下文中,用WebSocket替换是否合适。另一种情况是,如果您要编写一个IRC服务器,您是否适合使用WebSocket而不是普通的TCP套接字,在这种情况下有没有理由远离WebSocket?

如果您将WebSocket与TCP进行比较,WebSocket有许多优点:

Unicode支持 面向数据报的交互 基于HTTP连接的防火墙遍历 然而,这种比较有点错误。如果您不使用WebSockets,就不会被迫直接在TCP上开始构建。还有很多其他的协议,很多伟大的实现都无法计数

也许HTTP本身非常适合您的应用程序。或者XMPP或谷歌协议缓冲区或其他东西。这完全取决于应用程序需要通信的内容

在选择协议或(很少)设计自己的协议之前,您需要弄清楚应用程序需要进行何种通信。然后,您可以评估不同的协议,并决定哪种协议适合您的问题


这就是说,现在的大多数开发似乎都集中在web上。即使应用程序本身没有web-y特性,但现在许多人选择HTTP作为他们的协议。在这一点上,已经做了大量的工作来标准化HTTP的使用,将其作为一系列问题的解决方案,并构建库来促进这种使用。很有可能,无论您在构建什么,HTTP都会再次成为合适的选择,我不知道您在构建什么,所以这只是一个猜测。

WEB套接字是用于WEB应用程序的。。。。剩下的是网络应用……@ΦXocę웃Пepeúpaツ 我知道,我正在尝试理解我是否应该考虑WebSutoCt作为一个普通的网络应用程序,还是更好地坚持常规的套接字,因为您可能想选择一些已经设计并实现的协议,问题应该更多地是关于应用程序的需求是什么,以及现有的协议最符合您的需求。见鬼,如果你正在进行文件传输,你可能需要ftp。如果您正在执行请求/响应,您可能只需要http和JSON负载。根据您的需要,有数百种选项可供选择。此外,您可能希望选择一个周围有一个非常好的开发人员社区和一个活动的存储库的东西。如果您使用普通套接字,您可以编写与传输/解析相关的代码,以便将简单的消息从一端传递到另一端。webSocket已经为您完成了这一切,而在webSocket之上构建socket.io则更容易做到这一点。对于已经构建的许多其他协议也是如此。在大多数情况下,有很多理由使用现有的设计和实现,而不是从头开始构建自己的设计和实现。WebSocket与Web关系不大,只是它使用HTTP/HTTPS进行设置。它基本上是一个突破协议,也就是我想做的事情,而不是客户端->服务器web请求。特别是,缓存和您可以使用HTTP请求元数据执行的其他操作不在窗口中。将其与标准TCP套接字进行比较:标准TCP套接字就像一条铁路线,您需要自带工具和材料来建造列车。Websockets已经提供了一个小型电力机车和一个朴素的平板火车车厢,你可以在上面建造一个木屋。感谢你的洞察力,这正是我想要的。