tcp_socket.https.html (1915B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/resources/test-only-api.js"></script> 5 <script> 6 'use strict'; 7 8 promise_test(async () => { 9 const kPacket = "I'm a netcat. Meow-meow!" 10 11 const serverSocket = new TCPServerSocket("127.0.0.1"); 12 const { localPort } = await serverSocket.opened; 13 14 const clientSocket = new TCPSocket("127.0.0.1", localPort); 15 const acceptedSocket = await (async () => { 16 const { readable } = await serverSocket.opened; 17 const reader = readable.getReader(); 18 const { value: acceptedSocket, done } = await reader.read(); 19 assert_false(done); 20 reader.releaseLock(); 21 return acceptedSocket; 22 })(); 23 24 const encoder = new TextEncoder(); 25 const decoder = new TextDecoder(); 26 27 const readPacket = async socket => { 28 const { readable } = await socket.opened; 29 const reader = readable.getReader(); 30 let result = ""; 31 while (result.length < kPacket.length) { 32 const { value, done } = await reader.read(); 33 assert_false(done); 34 result += decoder.decode(value); 35 } 36 assert_equals(result, kPacket); 37 reader.releaseLock(); 38 }; 39 40 const sendPacket = async socket => { 41 const { writable } = await socket.opened; 42 const writer = writable.getWriter(); 43 await writer.ready; 44 await writer.write(encoder.encode(kPacket)); 45 writer.releaseLock(); 46 }; 47 48 const acceptedSocketEcho = (async () => { 49 await readPacket(acceptedSocket); 50 await sendPacket(acceptedSocket); 51 })(); 52 53 const clientSocketSend = (async () => { 54 await sendPacket(clientSocket); 55 })(); 56 57 const clientSocketReceive = (async () => { 58 await readPacket(clientSocket); 59 })(); 60 61 await clientSocketReceive; 62 63 await clientSocket.close(); 64 await acceptedSocket.close(); 65 await serverSocket.close(); 66 67 }, 'TCPSocket exchanges packets with TCPServerSocket'); 68 </script>