chrome.sockets.udp

คำอธิบาย

ใช้ chrome.sockets.udp API เพื่อส่งและรับข้อมูลผ่านเครือข่ายโดยใช้การเชื่อมต่อ UDP API นี้แทนที่ฟังก์ชัน UDP ที่เคยอยู่ใน API "ซ็อกเก็ต"

ไฟล์ Manifest

ต้องประกาศคีย์ต่อไปนี้ในไฟล์ Manifest เพื่อใช้ API นี้

"sockets"

ประเภท

CreateInfo

พร็อพเพอร์ตี้

  • socketId

    ตัวเลข

    รหัสของซ็อกเก็ตที่สร้างขึ้นใหม่ โปรดทราบว่ารหัสซ็อกเก็ตที่สร้างจาก API นี้ใช้ร่วมกับรหัสซ็อกเก็ตที่สร้างจาก API อื่นๆ ไม่ได้ เช่น API [socket](../socket/) ที่เลิกใช้งานแล้ว

DnsQueryType

Chrome 103 ขึ้นไป

ค่ากำหนดการแปลง DNS ค่าเริ่มต้นคือ any และใช้การกำหนดค่าระบบปฏิบัติการปัจจุบันซึ่งอาจแสดงผล IPv4 หรือ IPv6 ipv4 บังคับใช้ IPv4 และ ipv6 บังคับใช้ IPv6

ค่าแจกแจง

"any"

"ipv4"

"ipv6"

ReceiveErrorInfo

พร็อพเพอร์ตี้

  • resultCode

    ตัวเลข

    รหัสผลลัพธ์ที่แสดงจากการเรียก recvfrom() ที่สำคัญ

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

ReceiveInfo

พร็อพเพอร์ตี้

  • เพิ่มเติม

    ArrayBuffer

    เนื้อหาแพ็กเก็ต UDP (ตัดทอนให้มีขนาดเท่าบัฟเฟอร์ปัจจุบัน)

  • remoteAddress

    สตริง

    ที่อยู่ของโฮสต์ที่แพ็กเก็ตมาจาก

  • remotePort

    ตัวเลข

    พอร์ตของโฮสต์ที่แพ็กเก็ตมาจาก

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

SendInfo

พร็อพเพอร์ตี้

  • bytesSent

    หมายเลข ไม่บังคับ

    จำนวนไบต์ที่ส่ง (หาก result == 0)

  • resultCode

    ตัวเลข

    รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

SocketInfo

พร็อพเพอร์ตี้

  • bufferSize

    หมายเลข ไม่บังคับ

    ขนาดของบัฟเฟอร์ที่ใช้รับข้อมูล หากไม่ได้ระบุขนาดบัฟเฟอร์อย่างชัดเจน ระบบจะไม่ระบุค่า

  • localAddress

    สตริง ไม่บังคับ

    หากซ็อกเก็ตพื้นฐานเชื่อมโยงอยู่ จะมีที่อยู่ IPv4/6 ของเครื่อง

  • localPort

    หมายเลข ไม่บังคับ

    หากซ็อกเก็ตพื้นฐานเชื่อมโยงอยู่ จะมีพอร์ตภายใน

  • ชื่อ

    สตริง ไม่บังคับ

    สตริงที่แอปพลิเคชันกำหนดซึ่งเชื่อมโยงกับซ็อกเก็ต

  • หยุดชั่วคราว

    บูลีน

    Flag indicating whether the socket is blocked from firing onReceive events.

  • ต่อเนื่อง

    บูลีน

    Flag indicating whether the socket is left open when the application is suspended (see SocketProperties.persistent).

  • socketId

    ตัวเลข

    ตัวระบุซ็อกเก็ต

SocketProperties

พร็อพเพอร์ตี้

  • bufferSize

    หมายเลข ไม่บังคับ

    ขนาดของบัฟเฟอร์ที่ใช้รับข้อมูล หากบัฟเฟอร์เล็กเกินไปที่จะรับแพ็กเก็ต UDP ข้อมูลจะสูญหาย ค่าเริ่มต้นคือ 4096

  • ชื่อ

    สตริง ไม่บังคับ

    สตริงที่แอปพลิเคชันกำหนดซึ่งเชื่อมโยงกับซ็อกเก็ต

  • ต่อเนื่อง

    บูลีน ไม่บังคับ

    Flag ที่ระบุว่าซ็อกเก็ตยังเปิดอยู่หรือไม่เมื่อเลิกโหลดหน้ากิจกรรมของแอปพลิเคชัน (ดูจัดการวงจรแอป) ค่าเริ่มต้นคือ "false" เมื่อโหลดแอปพลิเคชันแล้ว คุณจะดึงข้อมูลซ็อกเก็ตที่เปิดไว้ก่อนหน้านี้ด้วย persistent=true ได้โดยใช้ getSockets

เมธอด

bind()

chrome.sockets.udp.bind(
  socketId: number,
  address: string,
  port: number,
  callback: function,
)
: void

เชื่อมโยงที่อยู่และพอร์ตในเครื่องสำหรับซ็อกเก็ต สำหรับซ็อกเก็ตไคลเอ็นต์ ขอแนะนำให้ใช้พอร์ต 0 เพื่อให้แพลตฟอร์มเลือกพอร์ตที่ว่าง

เมื่อbindการดำเนินการเสร็จสมบูรณ์แล้ว ระบบจะเรียกใช้เหตุการณ์ onReceive เมื่อแพ็กเก็ต UDP มาถึงที่อยู่/พอร์ตที่ระบุ เว้นแต่จะมีการหยุดซ็อกเก็ตชั่วคราว

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • ที่อยู่

    สตริง

    ที่อยู่ของเครื่องในพื้นที่ รองรับชื่อ DNS, รูปแบบ IPv4 และ IPv6 ใช้ "0.0.0.0" เพื่อยอมรับแพ็กเกตจากอินเทอร์เฟซเครือข่ายภายในทั้งหมดที่มีอยู่

  • พอร์ต

    ตัวเลข

    พอร์ตของเครื่องภายใน ใช้ "0" เพื่อเชื่อมโยงกับพอร์ตที่ว่าง

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

close()

Promise
chrome.sockets.udp.close(
  socketId: number,
  callback?: function,
)
: Promise<void>

ปิดซ็อกเก็ตและปล่อยที่อยู่/พอร์ตที่ซ็อกเก็ตเชื่อมโยงอยู่ ควรปิดซ็อกเก็ตแต่ละรายการที่สร้างขึ้นหลังการใช้งาน รหัสซ็อกเก็ตจะใช้ไม่ได้อีกต่อไปทันทีที่มีการเรียกใช้ฟังก์ชัน อย่างไรก็ตาม เรารับประกันว่าจะปิดซ็อกเก็ตเมื่อเรียกใช้การเรียกกลับเท่านั้น

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • Promise<void>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

create()

Promise
chrome.sockets.udp.create(
  properties?: SocketProperties,
  callback?: function,
)
: Promise<CreateInfo>

สร้างซ็อกเก็ต UDP ที่มีพร็อพเพอร์ตี้ที่ระบุ

พารามิเตอร์

  • พร็อพเพอร์ตี้

    SocketProperties ไม่บังคับ

    พร็อพเพอร์ตี้ของซ็อกเก็ต (ไม่บังคับ)

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (createInfo: CreateInfo) => void

    • createInfo

      ผลลัพธ์ของการสร้างซ็อกเก็ต

การคืนสินค้า

  • Promise<CreateInfo>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

getInfo()

Promise
chrome.sockets.udp.getInfo(
  socketId: number,
  callback?: function,
)
: Promise<SocketInfo>

ดึงข้อมูลสถานะของซ็อกเก็ตที่ระบุ

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (socketInfo: SocketInfo) => void

    • socketInfo

      ออบเจ็กต์ที่มีข้อมูลซ็อกเก็ต

การคืนสินค้า

  • Promise<SocketInfo>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

getJoinedGroups()

Promise
chrome.sockets.udp.getJoinedGroups(
  socketId: number,
  callback?: function,
)
: Promise<string[]>

รับที่อยู่กลุ่มมัลติคาสต์ที่ซ็อกเก็ตเข้าร่วมอยู่

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (groups: string[]) => void

    • กลุ่ม

      string[]

      อาร์เรย์ของกลุ่มที่ซ็อกเก็ตเข้าร่วม

การคืนสินค้า

  • Promise<string[]>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

getSockets()

Promise
chrome.sockets.udp.getSockets(
  callback?: function,
)
: Promise<SocketInfo[]>

ดึงข้อมูลรายการซ็อกเก็ตที่แอปพลิเคชันเป็นเจ้าของและเปิดอยู่ในปัจจุบัน

พารามิเตอร์

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (socketInfos: SocketInfo[]) => void

    • socketInfos

      อาร์เรย์ของออบเจ็กต์ที่มีข้อมูลซ็อกเก็ต

การคืนสินค้า

  • Promise<SocketInfo[]>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

joinGroup()

chrome.sockets.udp.joinGroup(
  socketId: number,
  address: string,
  callback: function,
)
: void

เข้าร่วมกลุ่มมัลติแคสต์และเริ่มรับแพ็กเก็ตจากกลุ่มนั้น ต้องเชื่อมซ็อกเก็ตกับพอร์ตในเครื่องก่อนเรียกใช้เมธอดนี้

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • ที่อยู่

    สตริง

    อีเมลของกลุ่มที่จะเข้าร่วม ไม่รองรับชื่อโดเมน

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

leaveGroup()

chrome.sockets.udp.leaveGroup(
  socketId: number,
  address: string,
  callback: function,
)
: void

ออกจากกลุ่มมัลติแคสต์ที่เข้าร่วมก่อนหน้านี้โดยใช้ joinGroup คุณจำเป็นต้องเรียกใช้ฟังก์ชันนี้ก็ต่อเมื่อวางแผนที่จะใช้ซ็อกเก็ตต่อไป เนื่องจากระบบปฏิบัติการจะดำเนินการนี้โดยอัตโนมัติเมื่อปิดซ็อกเก็ต

การออกจากกลุ่มจะทำให้เราเตอร์ไม่ส่ง Datagram แบบหลายผู้รับไปยังโฮสต์ในเครื่อง โดยสมมติว่าไม่มีกระบวนการอื่นในโฮสต์ที่ยังเข้าร่วมกลุ่มอยู่

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • ที่อยู่

    สตริง

    อีเมลของกลุ่มที่ต้องการออก ไม่รองรับชื่อโดเมน

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

send()

chrome.sockets.udp.send(
  socketId: number,
  data: ArrayBuffer,
  address: string,
  port: number,
  dnsQueryType?: DnsQueryType,
  callback: function,
)
: void

ส่งข้อมูลในซ็อกเก็ตที่ระบุไปยังที่อยู่และพอร์ตที่ระบุ ต้องเชื่อมซ็อกเก็ตกับพอร์ตในเครื่องก่อนเรียกใช้เมธอดนี้

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • เพิ่มเติม

    ArrayBuffer

    ข้อมูลที่จะส่ง

  • ที่อยู่

    สตริง

    ที่อยู่ของเครื่องระยะไกล

  • พอร์ต

    ตัวเลข

    พอร์ตของเครื่องระยะไกล

  • dnsQueryType

    DnsQueryType ไม่บังคับ

    Chrome 103 ขึ้นไป

    ค่ากำหนดการแปลงที่อยู่

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (sendInfo: SendInfo) => void

    • sendInfo

      ผลลัพธ์ของเมธอด send

setBroadcast()

Chrome 44 ขึ้นไป
chrome.sockets.udp.setBroadcast(
  socketId: number,
  enabled: boolean,
  callback: function,
)
: void

เปิดหรือปิดใช้แพ็กเก็ตการออกอากาศในซ็อกเก็ตนี้

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • เปิดใช้อยู่

    บูลีน

    true เพื่อเปิดใช้แพ็กเก็ตการออกอากาศ false เพื่อปิดใช้

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน

setMulticastLoopbackMode()

chrome.sockets.udp.setMulticastLoopbackMode(
  socketId: number,
  enabled: boolean,
  callback: function,
)
: void

กำหนดว่าจะวนซ้ำแพ็กเก็ตมัลติคาสต์ที่ส่งจากโฮสต์ไปยังกลุ่มมัลติคาสต์กลับไปยังโฮสต์หรือไม่

หมายเหตุ: ลักษณะการทำงานของ setMulticastLoopbackMode จะแตกต่างกันเล็กน้อยระหว่างระบบ Windows กับระบบที่คล้าย Unix ความไม่สอดคล้องกันจะเกิดขึ้นก็ต่อเมื่อมีแอปพลิเคชันมากกว่า 1 รายการในโฮสต์เดียวกันที่เข้าร่วมกลุ่มมัลติแคสต์เดียวกันในขณะที่มีการตั้งค่าโหมดลูปแบ็กมัลติแคสต์ที่แตกต่างกัน ใน Windows แอปพลิเคชันที่ปิดลูปแบ็กจะไม่ได้รับแพ็กเก็ตลูปแบ็ก ส่วนในระบบที่คล้าย Unix แอปพลิเคชันที่ปิดลูปแบ็กจะไม่ส่งแพ็กเก็ตลูปแบ็กไปยังแอปพลิเคชันอื่นๆ ในโฮสต์เดียวกัน ดู MSDN ได้ที่ https://learn.microsoft.com/en-us/windows/win32/winsock/ip-multicast-2

การเรียกใช้เมธอดนี้ไม่จำเป็นต้องมีสิทธิ์แบบมัลติแคสต์

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • เปิดใช้อยู่

    บูลีน

    ระบุว่าจะเปิดใช้โหมดลูปแบ็กหรือไม่

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

setMulticastTimeToLive()

chrome.sockets.udp.setMulticastTimeToLive(
  socketId: number,
  ttl: number,
  callback: function,
)
: void

ตั้งค่า Time-To-Live ของแพ็กเก็ตมัลติแคสต์ที่ส่งไปยังกลุ่มมัลติแคสต์

การเรียกใช้เมธอดนี้ไม่จำเป็นต้องมีสิทธิ์แบบมัลติแคสต์

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • ttl

    ตัวเลข

    ค่า Time to Live

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (result: number) => void

    • ผลลัพธ์

      ตัวเลข

      รหัสผลลัพธ์ที่แสดงผลจากการเรียกเครือข่ายพื้นฐาน ค่าลบแสดงถึงข้อผิดพลาด

setPaused()

Promise
chrome.sockets.udp.setPaused(
  socketId: number,
  paused: boolean,
  callback?: function,
)
: Promise<void>

หยุดชั่วคราวหรือยกเลิกการหยุดชั่วคราวของซ็อกเก็ต ซ็อกเก็ตที่หยุดชั่วคราวจะถูกบล็อกไม่ให้เรียกใช้เหตุการณ์ onReceive

พารามิเตอร์

  • socketId

    ตัวเลข

  • หยุดชั่วคราว

    บูลีน

    Flag เพื่อระบุว่าจะหยุดชั่วคราวหรือยกเลิกการหยุดชั่วคราว

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • Promise<void>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

update()

Promise
chrome.sockets.udp.update(
  socketId: number,
  properties: SocketProperties,
  callback?: function,
)
: Promise<void>

อัปเดตพร็อพเพอร์ตี้ของซ็อกเก็ต

พารามิเตอร์

  • socketId

    ตัวเลข

    รหัสซ็อกเก็ต

  • พร็อพเพอร์ตี้

    พร็อพเพอร์ตี้ที่จะอัปเดต

  • callback

    ฟังก์ชัน ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    () => void

การคืนสินค้า

  • Promise<void>

    Chrome 121 ขึ้นไป

    ระบบรองรับ Promise สำหรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้การเรียกกลับ

กิจกรรม

onReceive

chrome.sockets.udp.onReceive.addListener(
  callback: function,
)

เหตุการณ์ที่เกิดขึ้นเมื่อได้รับแพ็กเก็ต UDP สำหรับซ็อกเก็ตที่ระบุ

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (info: ReceiveInfo) => void

onReceiveError

chrome.sockets.udp.onReceiveError.addListener(
  callback: function,
)

เหตุการณ์ที่เกิดขึ้นเมื่อเกิดข้อผิดพลาดเกี่ยวกับเครือข่ายขณะรันไทม์รอข้อมูลในที่อยู่และพอร์ตของซ็อกเก็ต เมื่อเกิดเหตุการณ์นี้ขึ้น ระบบจะหยุดซ็อกเก็ตชั่วคราวและจะไม่สร้างเหตุการณ์ onReceive สำหรับซ็อกเก็ตนี้อีกจนกว่าจะกลับมาทำงานอีกครั้ง

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (info: ReceiveErrorInfo) => void