如果您不编写 Web 应用程序,并且您的客户端不是浏览器,那么 Web 套接字相对于常规套接字的优势是什么?
What is the advantage of the web sockets over regular sockets if you are not writing a web app, and your clients won't be a browser?
stackoverflow上的Websockets和套接字之间的差异有一些文献。我要理解的是,为什么我要在普通插座上选择Web插座,如果我正在编写普通客户端/服务器应用程序,而服务器不一定是Web服务器,而连接到服务器的客户端是本机C 或Java客户端。
如果您必须处理浏览器,WebSockets具有巨大的优势,如果我不必支持浏览器,我仍然应该考虑使用WebSockets吗?
编辑:
更明确我要问的内容:是否较早地存在WebSockets,替换https://en.wikipedia.org/wiki/unix_domain_sockets替换使用Unix domain socket的Unix工具中,或在IPC上下文中使用插座的任何其他上下文。另一种情况是,如果您要编写IRC服务器,您是否适合使用Websocket代替普通的TCP套接字,在这种情况下,是否有任何理由远离Websocket?
如果您将WebSocket与TCP进行比较,Websockets具有许多优点:
- Unicode支持
- 面向数据报的交互
- HTTP基于连接的防火墙遍历
然而,这种比较有点是错误的二分法。如果您不使用Websocket,则不会被迫直接在TCP上构建。那里还有许多其他协议(太多了),并且有许多出色的实现。
也许HTTP本身非常适合您的应用程序。或者也许是XMPP或Google协议缓冲区或其他内容。这完全取决于您的申请需要进行的交流。
在选择协议(或很少设计自己的设计)之前,您需要弄清楚您的应用程序需要进行哪种通信。然后,您可以评估不同的协议并确定哪种问题适合您的问题。
也就是说,如今的大部分发展似乎都集中在网络上。即使该应用程序没有任何固有的网络-Y,许多人现在选择HTTP作为其协议。在这一点上,已经进行了大量的工作来标准化HTTP作为各种问题的解决方案,以及构建图书馆以促进这种用途。任何您要建造的东西都有可能是一个不错的选择(同样,我不知道您正在建造什么,所以这只是一个猜测)。
- 当套接字连接断开时检测C/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- MSG_WAITALL的套接字发送得到了 22 EINVAL
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- C++套接字对不读/写父/子
- Boost-Beast 异步 Web 套接字 服务器-客户端异步读写 不在控制台上写入输出
- 通过beast web套接字发送二进制数据(在C++中)
- 如果您不编写 Web 应用程序,并且您的客户端不是浏览器,那么 Web 套接字相对于常规套接字的优势是什么?
- POSIX套接字与Web套接字与Windows TCP/IP套接字
- Qt 本地安全 Web 套接字
- C++套接字 WEB 从特权站点获取信息