Chrome Uygulamaları, TCP ve UDP bağlantıları için bir ağ istemcisi görevi görebilir. Bu dokümanda, Ağ üzerinden veri göndermek ve almak için TCP ve UDP kullanılabilir. Daha fazla bilgi için Yuvalar UDP, Sockets TCP ve Sockets TCP Server API'leri.
Manifest ile ilgili gereksinimler
TCP veya UDP kullanan Chrome Uygulamaları için sockets girişini manifest dosyasına ekleyin ve IP'yi belirtin. uç nokta izin kuralları. Örneğin:
"sockets": {
"udp": {
"send": ["host-pattern1", ...],
"bind": ["host-pattern2", ...],
...
},
"tcp" : {
"connect": ["host-pattern1", ...],
...
},
"tcpServer" : {
"listen": ["host-pattern1", ...],
...
}
}
"ana makine-modeli" soketinin söz dizimi girişlerin şu kuralları izlemesi gerekir:
<host-pattern> := <host> | ':' <port> | <host> ':' <port>
<host> := '*' | '*.' <anychar except '/' and '*'>+
<port> := '*' | <port number between 1 and 65535>)
Söz diziminin ayrıntılı açıklaması için Yuva Manifest Anahtarı bölümüne bakın.
Yuva manifesti giriş örnekleri:
{ "tcp": { "connect" : "*:23" } }
: Herhangi bir ana makinenin 23 numaralı bağlantı noktasından bağlanıyor{ "tcp": { "connect" : ["*:23", "*:80"] } }
: Herhangi bir ana makinenin 23 veya 80 numaralı bağlantı noktasından bağlanıyor{ "tcp": { "connect" : "www.example.com:23" } }
: www.example.com adresindeki bağlantı noktası 23'ü bağlama{ "tcp": { "connect" : "" } }
: Ana makinelerin herhangi bir bağlantı noktasını bağlama{ "udp": { "send" : ":99" } }
: UDP paketinin ana makinelerin 99 numaralı bağlantı noktasına gönderilmesi{ "udp": { "bind" : ":8899" } }
: UDP paketlerini almak için yerel bağlantı noktası 8899'u bağlama{ "tcpServer": { "listen" : ":8080" } }
: Yerel bağlantı noktası 8080'de TCP dinleme
TCP'yi kullanma
Chrome Uygulamaları, TCP'yi destekleyen herhangi bir hizmetle bağlantı kurabilir.
Yuvaya bağlanılıyor
Aşağıda, bir yuvaya (sockets.tcp.connect) nasıl bağlanacağını gösteren bir örnek verilmiştir:
chrome.sockets.tcp.create({}, function(createInfo) {
chrome.sockets.tcp.connect(createInfo.socketId,
IP, PORT, onConnectedCallback);
});
Daha sonra veri alıp gönderebilmek için socketId
herkese açık kullanıcı adını kullanın.
(sockets.tcp.send) ekleyebilirsiniz.
Yuvadan alma ve sokete gönderme
(sockets.tcp.onReceive) veri almak ve bir yuvaya göndermek için ArrayBuffer nesneleri kullanılır. Alıcı: ArrayBuffers hakkında bilgi edinin, genel bakışı,JavaScript türünde diziler'i ve eğiticiyi inceleyin ArrayBuffer'ı String'e ve String'den dönüştürme.
chrome.sockets.tcp.send(socketId, arrayBuffer, onSentCallback);
chrome.sockets.tcp.onReceive.addListener(function(info) {
if (info.socketId != socketId)
return;
// info.data is an arrayBuffer.
});
Priz bağlantısını kesme
Bağlantının nasıl kesileceği aşağıda açıklanmıştır (sockets.tcp.disconnect):
chrome.sockets.tcp.disconnect(socketId);
UDP'yi kullanma
Chrome Uygulamaları, UDP'yi destekleyen herhangi bir hizmetle bağlantı kurabilir.
Veri gönderiliyor
Aşağıda, UDP kullanılarak ağ üzerinden nasıl veri (sockets.udp.send) gönderileceğini gösteren bir örnek verilmiştir:
// Create the Socket
chrome.sockets.udp.create({}, function(socketInfo) {
// The socket is created, now we can send some data
var socketId = socketInfo.socketId;
chrome.sockets.udp.send(socketId, arrayBuffer,
'127.0.0.1', 1337, function(sendInfo) {
console.log("sent " + sendInfo.bytesSent);
});
});
Veri alınıyor
Bu örnek, "Sending data" (Veri gönderme) Bunun dışında, her bir etkinlik için verileri alıyor.
var socketId;
// Handle the "onReceive" event.
var onReceive = function(info) {
if (info.socketId !== socketId)
return;
console.log(info.data);
};
// Create the Socket
chrome.sockets.udp.create({}, function(socketInfo) {
socketId = socketInfo.socketId;
// Setup event handler and bind socket.
chrome.sockets.udp.onReceive.addListener(onReceive);
chrome.sockets.udp.bind(socketId,
"0.0.0.0", 0, function(result) {
if (result < 0) {
console.log("Error binding socket.");
return;
}
chrome.sockets.udp.send(socketId, arrayBuffer,
'127.0.0.1', 1337, function(sendInfo) {
console.log("sent " + sendInfo.bytesSent);
});
});
});
TCP Sunucusunu Kullanma
Chrome Uygulamaları, sockets.tcpServer API'sini kullanarak TCP sunucuları gibi davranabilir.
TCP sunucu yuvası oluşturma
sockets.tcpServer.create komutunu kullanarak bir TCP sunucu yuvası oluşturun.
chrome.sockets.tcpServer.create({}, function(createInfo) {
listenAndAccept(createInfo.socketId);
});
İstemci bağlantıları kabul ediliyor
Aşağıda, TCP sunucusunda bağlantıların (sockets.tcpServer.listen) nasıl kabul edileceğini gösteren bir örnek verilmiştir. yuva:
function listenAndAccept(socketId) {
chrome.sockets.tcpServer.listen(socketId,
IP, PORT, function(resultCode) {
onListenCallback(socketId, resultCode)
});
}
Daha sonra yeni bağlantıları kabul edebilmek için socketId
herkese açık kullanıcı adını kullanın
(sockets.tcpServer.onAccept) .
var serverSocketId;
function onListenCallback(socketId, resultCode) {
if (resultCode < 0) {
console.log("Error listening:" +
chrome.runtime.lastError.message);
return;
}
serverSocketId = socketId;
chrome.sockets.tcpServer.onAccept.addListener(onAccept)
}
Yeni bir bağlantı kurulduğunda onAccept
, yeni TCP'nin clientSocketId
ile çağrılır
bağlantı. İstemci yuvası kimliği sockets.tcp API ile birlikte kullanılmalıdır. Yeni cihazın yuvası
Bağlantı varsayılan olarak duraklatılır. Almaya başlamak için sockets.tcp.setPaused komutuyla duraklatmayı kaldırın
dışı verilerdir.
function onAccept(info) {
if (info.socketId != serverSocketId)
return;
// A new TCP connection has been established.
chrome.sockets.tcp.send(info.clientSocketId, data,
function(resultCode) {
console.log("Data sent to new TCP client connection.")
});
// Start receiving data.
chrome.sockets.tcp.onReceive.addListener(function(recvInfo) {
if (recvInfo.socketId != info.clientSocketId)
return;
// recvInfo.data is an arrayBuffer.
});
chrome.sockets.tcp.setPaused(false);
}
İstemci bağlantılarını kabul etmeyi durdur
Yeni bağlantıları kabul etmeyi durdurmak için sunucu yuvası kimliğinde sockets.tcp.disconnect çağrısı yapın.
chrome.sockets.tcpServer.onAccept.removeListener(onAccept);
chrome.sockets.tcpServer.disconnect(serverSocketId);