是否可以创建一个Web应用程序,在中央服务器的帮助下,可以与同一Web应用程序的其他用户建立直接连接?我想象的是一个类似于UDP打孔的过程。
我已经阅读了HTML5中的新WebSockets API,但看起来您必须在完全双工连接开始之前启动与WS兼容服务器的连接。我正在考虑更多关于在客户端之间建立直接连接的过程,而服务器在初始握手中仅涉及 。
注意:Java小程序不计算在内。我只对标准浏览器技术感兴趣。
答案 0 :(得分:107)
而不是智能猜测,这是一个明智的答案:
HTML 5计划允许来自javascript的点对点连接,但这些连接不会是原始TCP。
完整的规范可以在http://dev.w3.org/html5/websockets/
找到JRH
编辑:具体参考点对点连接,请查看以下链接:
值得注意的是,这些功能仍在协商中。能够创建“本地聊天”网络应用程序会很高兴:)
JRH
答案 1 :(得分:29)
更新10/17/2012 :此功能现在存在于Chrome Stable v22中。要在Chrome中使用此功能,必须在chrome:// flags:
中启用两个标记然后您可以访问AppRTC Demo Page来试用该演示。有关设置Chrome以使用点对点功能和启用设备捕获的详细说明,请参阅WebRTC - Running the Demos页面。
更新: Ericcson Labs的工程师在WebKit构建中有HTML5 Peer to Peer Conversational Video的概念证明。
他们在博客中展示了该技术的实际应用,以及该技术如何运作的图表和解释。
他们正在努力使其稳定并致力于WebKit存储库。
答案 2 :(得分:7)
在撰写本文时(2017年),WebRTC现在是大多数现代浏览器的标准组成部分(约占使用中的70%),并允许多媒体流,点对点和打孔。
可以在html5rocks.com找到WebRTC的文档,示例代码和实时示例。
根据caniuse.com和html5rocks.com,以下浏览器支持WebRTC:
全力支持: Edge 14,Firefox 22,Firefox Android 55
部分支持: Android浏览器56,Chrome 20,Chrome Android 29,Edge 12,Firefox 17,Opera 18,Opera Android 20,Opera Mobile 12,UC浏览器Android 11.4
未来支持(2017年第3季度):适用于iOS 11的Chrome,适用于iOS 11和OS X 10.11的Safari 11
不支持:IE,IE Mobile,Opera Mini
WebRTC的饱和率在Apple设备上受到限制,因为Safari 11尚未发布,需要iOS 11或OS X 10.11。虽然从过去的升级趋势预测,到2018年,大约75%的iOS设备应该可以使用WebRTC,到2020年将提供100%。
答案 3 :(得分:4)
为什么这会很棘手有很多原因:
WebSockets旨在解决第二个问题,但(故意,我希望)不是其他两个问题。当他们谈论HTML5规范中的点对点时,他们谈论的是服务器和客户端之间的全双工通信,而不是一个客户端与另一个客户端之间的全双工通信。
但是,在websockets上实现适当的网络堆栈会很简单 - 条件是所有通信仍然必须通过服务器完成。我已经看到这使用长轮询完成(我的一个朋友在Uni使用长轮询写了一个完整的TCP / IP堆栈)。
答案 4 :(得分:0)
我第二次harshath.jr:您可以将服务器充当目录(暴露每个连接代理的“起源”;来源是方案+主机+端口,如draft-abarth-origin,方案是“ws”或“wss”)。然后,您可以启动对等WebSocket连接;由于SOP,CORS正在进行中。当然,这意味着每个代理(即浏览器)都必须嵌入自己的WebSocket服务器(即Opera Unite)。
同时,做XMPP / IRC /等方式:没有点对点连接,但是WebSocket连接到中央服务器(或网络!)以将消息传递给连接的代理(最终使用一些特定的WebSocket“子协议”)
编辑:请注意,所有这些实际上都超出了HTML5的范围(所有这些都曾经是HTML5的一部分,但已被拆分为他们自己的规范)
答案 5 :(得分:0)
Web套接字的整体思想是解决防火墙和代理问题http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket