[مسودة]
UDP مقبس API كما هو مقترح من قبل W3C Sysapps WG السابقين
ملاحظة: في وقت هذه المواصفات، لم يتم الانتهاء من واجهة برمجة تطبيقات STREAM بعد. من المحتمل أن يتطلب هذا التنفيذ بعض التعديلات في خوارزمياته
المرجع: واجهة برمجة تطبيقات مقبس TCP UDP
إلى الأشياء التي يجب أن تكون على علم بها:
readable
writable
.الهدف هو كتابة محولات البائع مثل:
نرحب بأي شخص للمساهمة في هذا المشروع ;-)
//
// 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 = 'rn' ,
search = '' ;
// Request permission to send multicast messages to the address and
// port reserved for SSDP
navigator . udpPermission . requestPermission ( { remoteAddress : "239.255.255.250" ,
remotePort : 1900 } ) . then (
( ) => {
// Permission was granted
// 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 ( ) {
mySocket . readable . getReader ( ) . read ( ) . then ( ( { value , done } ) => {
if ( done ) return ;
console . log ( 'Remote address: ' + value . remoteAddress +
'Remote port: ' + value . remotePort +
'Message: ' + ab2str ( value . 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.
} ) ;
}
// 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 ) ;
) ;
} ,
e => console . error ( "Sending SSDP multicast messages was denied due to error: " , e ) ;
) ;
حقوق الطبع والنشر (ج) 2016 ألكساندر مورجوت
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.