HTML5的TCP和UDP Web Socket API草案定稿
2015-04-10 23:36
363 查看
http://ourjs.com/detail/54810f3e0dad0fbb6d000012
分类 技术前沿 关键字 Html5 发布 kris 2014-12-05
注意 转载须保留原文链接,译文链接,作者译者等信息。
这是在Web上实现UDP/TCP API的草案,沿未形成标准。该标准的一大亮点就是使用内置Promise设计模式,替代了传统JavaScript中的事件触发回调。不过各大浏览器厂商会不会这样实现还要打一个问号,毕竟编写标准的学院派和实现标准的行业派很难达到完全统一。
以下内容来自: http://www.w3.org/TR/2014/WD-tcp-udp-sockets-20141202/
接口标准提供对原始UDP套接字(Socket),TCP客户端套接字和TCP服务器套接字API的定义。
这部分沿未形成规范。您可以使用该API来发送和接收数据,并使用TCP或UDP网络。
能够与SMTP, POP3 和 IMAP 服务器进行通信的邮件服务器。
一个能与IRC服务器进行通信的IRC客户端 (注* IRC是一种通过网络的即时聊天方式。其主要用于群组聊天。)
实现一个SSH应用程序
与现有的消费硬件产品进行通信,如互联网电视
游戏服务器
端到端应用程序(注* P2P或对等网络应用)
本地网络多播服务(multicast service)发掘,例如UPnP/ SSDP和mDNS
一个UDP的例子:
相比UDP,TCP的示例代码显得简单一些
有什么问题可在Github上面给他们开Issues:, 不过关注者廖廖(14个star目前): https://github.com/sysapps/tcp-udp-sockets/issues
分类 技术前沿 关键字 Html5 发布 kris 2014-12-05
注意 转载须保留原文链接,译文链接,作者译者等信息。
这是在Web上实现UDP/TCP API的草案,沿未形成标准。该标准的一大亮点就是使用内置Promise设计模式,替代了传统JavaScript中的事件触发回调。不过各大浏览器厂商会不会这样实现还要打一个问号,毕竟编写标准的学院派和实现标准的行业派很难达到完全统一。
以下内容来自: http://www.w3.org/TR/2014/WD-tcp-udp-sockets-20141202/
接口标准提供对原始UDP套接字(Socket),TCP客户端套接字和TCP服务器套接字API的定义。
简介
这部分沿未形成规范。您可以使用该API来发送和接收数据,并使用TCP或UDP网络。
使用此API的部分用例:
能够与SMTP, POP3 和 IMAP 服务器进行通信的邮件服务器。一个能与IRC服务器进行通信的IRC客户端 (注* IRC是一种通过网络的即时聊天方式。其主要用于群组聊天。)
实现一个SSH应用程序
与现有的消费硬件产品进行通信,如互联网电视
游戏服务器
端到端应用程序(注* P2P或对等网络应用)
本地网络多播服务(multicast service)发掘,例如UPnP/ SSDP和mDNS
一个UDP的例子:
// // This example shows a simple implementation of UPnP-SSDP M-SEARCH // discovery using a multicast UDPSocket // var address = '239.255.255.250', port = '1900', serviceType = 'upnp:rootdevice', rn = '\r\n', search = ''; // Create a new UDP client socket var mySocket = new UDPSocket(); // Build an SSDP M-SEARCH multicast message search += 'M-SEARCH * HTTP/1.1' + rn; search += 'ST: ' + serviceType + rn; search += 'MAN: "ssdp:discover"' + rn; search += 'HOST: ' + address + ':' + port + rn; search += 'MX: 10'; // Receive and log SSDP M-SEARCH response messages function receiveMSearchResponses() { // While data in buffer, read and log UDP message while (mySocket.readable.state === "readable") { var msg = mySocket.readable.read(); console.log ('Remote address: ' + msg.remoteAddress + ' Remote port: ' + msg.remotePort + 'Message: ' + ab2str(msg.data)); // ArrayBuffer to string conversion could also be done by piping // through a transform stream. To be updated when the Streams API // specification has been stabilized on this point. } // Wait for SSDP M-SEARCH responses to arrive mySocket.readable.wait().then( receiveMSearchResponses, e => console.error("Receiving error: ", e); ); } // Join SSDP multicast group mySocket.joinMulticast(address); // Send SSDP M-SEARCH multicast message mySocket.writeable.write( {data : str2ab(search), remoteAddress : address, remotePort : port }).then( () => { // Data sent sucessfully, wait for response console.log('M-SEARCH Sent'); receiveMSearchResponses(); }, e => console.error("Sending error: ", e); ); // Log result of UDP socket setup. mySocket.opened.then( () => { console.log("UDP socket created sucessfully"); }, e =>console.error("UDP socket setup failed due to error: ", e); ); // Handle UDP socket closed, either as a result of the application // calling mySocket.close() or an error causing the socket to be closed. mySocket.closed.then( () => { console.log("Socket has been cleanly closed"); }, e => console.error("Socket closed due to error: ", e); );
相比UDP,TCP的示例代码显得简单一些
// // This example shows a simple TCP echo client. // The client will send "Hello World" to the server on port 6789 and log // what has been received from the server. // // Create a new TCP client socket and connect to remote host var mySocket = new TCPSocket("127.0.0.1", 6789); // Send data to server mySocket.writeable.write("Hello World").then( () => { // Data sent sucessfully, wait for response console.log("Data has been sent to server"); mySocket.readable.wait().then( () => { // Data in buffer, read it console.log("Data received from server:" + mySocket.readable.read()); // Close the TCP connection mySocket.close(); }, e => console.error("Receiving error: ", e); ); }, e => console.error("Sending error: ", e); ); // Signal that we won't be writing any more and can close the write half of the connection. mySocket.halfClose(); // Log result of TCP connection attempt. mySocket.opened.then( () => { console.log("TCP connection established sucessfully"); }, e =>console.error("TCP connection setup failed due to error: ", e); ); // Handle TCP connection closed, either as a result of the application // calling mySocket.close() or the other side closed the TCP // connection or an error causing the TCP connection to be closed. mySocket.closed.then( () => { console.log("TCP socket has been cleanly closed"); }, e => console.error("TCP socket closed due to error: ", e); );
有什么问题可在Github上面给他们开Issues:, 不过关注者廖廖(14个star目前): https://github.com/sysapps/tcp-udp-sockets/issues
相关文章推荐
- web socket api(html5)
- vc api TCP&UDP—helloworld
- Linux系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select poll epoll udp组播 线程池
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- vc api TCP&UDP—helloworld
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)(二)
- clientapivc api TCP&UDP—helloworld
- 利用 HTML5 草案的 API 进行前端性能监控
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- Html5之高级-14 Web Socket(概述、API、示例)
- API的学习:TCP&&UDP
- JavaAPI之网络编程UDP/TCP简述及示例
- 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)
- HTML5 API ---WebAudio API与audio元素简介
- TCP/IP 详解卷一 - UDP
- 同时处理TCP和UDP请求的回射服务器
- VC++实现遍历所有进程的TCP与UDP链接
- 一些TCP和UDP使用问题汇总
- TCP和UDP
- TCP/UDP select超时处理