HTML5   发布时间:2022-04-25  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了HTML5的TCP和UDP Web Socket API草案定稿大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
http://ourjs.com/detail/54810f3e0dad0fbb6d000012
分类  技术前沿    关键字  Html5    发布  kris   2014-12-05 
注意 转载须保留原文链接,译文链接,作者译者等信息。  
这是在Web上实现UDP/TCP API的草案,沿未形成标准。该标准的一大亮点就是使用内置Promise设计模式,替代了传统JavaScript中的事件触发回调。不过各大浏览器厂商会不会这样实现还要打一个问号,毕竟编写标准的学院派和实现标准的行业派很难达到完全统一。


接口标准提供对原始UDP套接字(Socket),TCP客户端套接字和TCP服务器套接字API的定义。


简介


这部分沿未形成规范。您可以使用该API来发送和接收数据,并使用TCP或UDP网络。

使用此API的部分用例:


  • 能够与SMTP,POP3 和 IMAP 服务器进行通信的邮件服务器。
  • 一个能与IRC服务器进行通信的IRC客户端 (注* IRC是一种通过网络的即时聊天方式。其主要用于群组聊天。)
  • 实现一个SSH应用程序
  • 与现有的消费硬件产品进行通信,如互联网电视
  • 游戏服务器
  • 端到端应用程序(注* P2P或对等网络应用)
  • 本地网络多播服务(multicast service)发掘,例如UPnP/ SSDP和mDNS

一个UDP的例子:

@H_502_77@// // 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);
        );
    },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

大佬总结

以上是大佬教程为你收集整理的HTML5的TCP和UDP Web Socket API草案定稿全部内容,希望文章能够帮你解决HTML5的TCP和UDP Web Socket API草案定稿所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。