我可以使用 web rtc 在 Javascript 中编写 web 服务器吗?
Can I use web rtc to write a web server in Javascript?
我可以使用 webrtc 在 Javascript 中编写一个 Web 服务器,以便有人可以通过访问 URL 之类的 becomeawebserver.com 将他们的 Web 浏览器变成一个 Web 服务器(示例名称 I刚编的)?
我只是想学习网络 rtc,所以我想了解它的功能
更新
我现在从 Svetlin Mladenov 那里得到了答案:
Webrtc不能作为http服务器使用,因为无法指定端口,webrtc无法打开TCP连接。 –
WebRTC 使用自己的一套协议(基于 RTP、SCTP 等),因此您无法使用 WebRTC 实现传统的 HTTP 服务器。您可以通过 WebRTC 数据通道传输 HTTP,但这显然与传统的基于 TCP 的 HTTP 完全不同,后者是互联网的 backbone。但是,如果实施和 运行 您自己的与 HTTP 不兼容的协议在您眼中符合网络服务器的条件,那么,是的,您可以使用 WebRTC 实施网络服务器,但不能实施 HTTP 服务器。
要连接到 TCP 服务器(HTTP 服务器也是 TCP 服务器),您需要两件事:1. 一个 IP 地址,可以通过 DNS 解析人类可读的名称(如 becomeawebserver.com 和 2)获得 IP 地址和 2.港口.
WebRTC 并非如此。连接到 WebRTC 实例要复杂得多,因为 WebRTC 在创建时考虑到了点对点连接,因此它会自动执行 NAT 遍历、打孔等操作。所有这些都意味着 WebRTC 实例不只有一个 IP 地址,而是多个 IP 地址。 WebRTC 自动搜索最佳连接。
要建立 WebRTC 连接,需要第三方(以信令服务器的形式)。因此,如果您希望客户端能够仅输入一个人类可读的名称(如 becomeawebserver.com)并连接到浏览器转换的服务器,那么您必须自己实现解析(DNS 不适合,因为 webrtc 实例有许多事先不知道的地址,webrtc 绑定到一个随机的临时端口)并在两个实例之间发送信号以将它们连接在一起,然后其余的通信可以直接通过 WebRTC 数据通道执行。
总结一下:WebRTC 使用自己的协议,因此您必须实施和使用自己版本的 HTTP、DNS 等。如果这符合您的网络服务器的条件,那么,是的,您可以使用 WebRTC 实现网络服务器。
'Yes' - 我在问自己同样的问题并找到了 +PeerServer,一个斯坦福大学的高年级学生项目。据我了解,它是一个 javascript 库,可将 webrtc 数据流抽象并转换为 HTTP。
原始服务器仅处理点对点握手,从那里 'in browser' 服务器的行为与传统服务器的预期一致。
我仍然对这个令人敬畏的事物感到困惑,所以自己去看看这个项目吧。我认为它认识到以前受访者的局限性,然后解决它们。
我可以使用 webrtc 在 Javascript 中编写一个 Web 服务器,以便有人可以通过访问 URL 之类的 becomeawebserver.com 将他们的 Web 浏览器变成一个 Web 服务器(示例名称 I刚编的)?
我只是想学习网络 rtc,所以我想了解它的功能
更新
我现在从 Svetlin Mladenov 那里得到了答案:
Webrtc不能作为http服务器使用,因为无法指定端口,webrtc无法打开TCP连接。 –
WebRTC 使用自己的一套协议(基于 RTP、SCTP 等),因此您无法使用 WebRTC 实现传统的 HTTP 服务器。您可以通过 WebRTC 数据通道传输 HTTP,但这显然与传统的基于 TCP 的 HTTP 完全不同,后者是互联网的 backbone。但是,如果实施和 运行 您自己的与 HTTP 不兼容的协议在您眼中符合网络服务器的条件,那么,是的,您可以使用 WebRTC 实施网络服务器,但不能实施 HTTP 服务器。
要连接到 TCP 服务器(HTTP 服务器也是 TCP 服务器),您需要两件事:1. 一个 IP 地址,可以通过 DNS 解析人类可读的名称(如 becomeawebserver.com 和 2)获得 IP 地址和 2.港口.
WebRTC 并非如此。连接到 WebRTC 实例要复杂得多,因为 WebRTC 在创建时考虑到了点对点连接,因此它会自动执行 NAT 遍历、打孔等操作。所有这些都意味着 WebRTC 实例不只有一个 IP 地址,而是多个 IP 地址。 WebRTC 自动搜索最佳连接。
要建立 WebRTC 连接,需要第三方(以信令服务器的形式)。因此,如果您希望客户端能够仅输入一个人类可读的名称(如 becomeawebserver.com)并连接到浏览器转换的服务器,那么您必须自己实现解析(DNS 不适合,因为 webrtc 实例有许多事先不知道的地址,webrtc 绑定到一个随机的临时端口)并在两个实例之间发送信号以将它们连接在一起,然后其余的通信可以直接通过 WebRTC 数据通道执行。
总结一下:WebRTC 使用自己的协议,因此您必须实施和使用自己版本的 HTTP、DNS 等。如果这符合您的网络服务器的条件,那么,是的,您可以使用 WebRTC 实现网络服务器。
'Yes' - 我在问自己同样的问题并找到了 +PeerServer,一个斯坦福大学的高年级学生项目。据我了解,它是一个 javascript 库,可将 webrtc 数据流抽象并转换为 HTTP。
原始服务器仅处理点对点握手,从那里 'in browser' 服务器的行为与传统服务器的预期一致。
我仍然对这个令人敬畏的事物感到困惑,所以自己去看看这个项目吧。我认为它认识到以前受访者的局限性,然后解决它们。