Aplikasi Chrome dapat berfungsi sebagai klien jaringan untuk koneksi TCP dan UDP. Dokumen ini menunjukkan cara menggunakan TCP dan UDP untuk mengirim dan menerima data melalui jaringan. Untuk informasi selengkapnya, lihat Soket UDP, Sockets TCP, dan Sockets TCP Server API.
Persyaratan manifes
Untuk Aplikasi Chrome yang menggunakan TCP atau UDP, tambahkan entri sockets ke manifes dan tentukan IP aturan izin akses endpoint. Contoh:
"sockets": {
"udp": {
"send": ["host-pattern1", ...],
"bind": ["host-pattern2", ...],
...
},
"tcp" : {
"connect": ["host-pattern1", ...],
...
},
"tcpServer" : {
"listen": ["host-pattern1", ...],
...
}
}
Sintaks soket "host-pattern" entri mengikuti aturan berikut:
<host-pattern> := <host> | ':' <port> | <host> ':' <port>
<host> := '*' | '*.' <anychar except '/' and '*'>+
<port> := '*' | <port number between 1 and 65535>)
Lihat Kunci Manifes Soket untuk mengetahui deskripsi mendetail tentang sintaksis.
Contoh entri manifes soket:
{ "tcp": { "connect" : "*:23" } }
–terhubung di port 23 dari host mana pun{ "tcp": { "connect" : ["*:23", "*:80"] } }
–terhubung di port 23 atau 80 host apa pun{ "tcp": { "connect" : "www.example.com:23" } }
–porta penghubung 23 dari www.example.com{ "tcp": { "connect" : "" } }
–menghubungkan port mana pun dari host mana pun{ "udp": { "send" : ":99" } }
–mengirim paket UDP ke port 99 dari host apa pun{ "udp": { "bind" : ":8899" } }
–mengikat port lokal 8899 untuk menerima paket UDP{ "tcpServer": { "listen" : ":8080" } }
–TCP memproses port lokal 8080
Menggunakan TCP
Aplikasi Chrome dapat membuat koneksi ke layanan apa pun yang mendukung TCP.
Menyambungkan ke soket
Berikut adalah contoh yang menunjukkan cara menghubungkan (sockets.tcp.connect) ke sebuah soket:
chrome.sockets.tcp.create({}, function(createInfo) {
chrome.sockets.tcp.connect(createInfo.socketId,
IP, PORT, onConnectedCallback);
});
Simpan nama sebutan channel di socketId
agar Anda nantinya dapat menerima dan mengirim data
(sockets.tcp.send) ke soket ini.
Menerima dari dan mengirim ke soket
Menerima dari (sockets.tcp.onReceive) dan mengirim ke soket menggunakan objek ArrayBuffer. Kepada pelajari tentang ArrayBuffer, lihat ringkasan, array berjenis JavaScript, dan tutorial, Cara mengonversi ArrayBuffer ke dan dari String.
chrome.sockets.tcp.send(socketId, arrayBuffer, onSentCallback);
chrome.sockets.tcp.onReceive.addListener(function(info) {
if (info.socketId != socketId)
return;
// info.data is an arrayBuffer.
});
Memutuskan sambungan dari soket
Berikut ini cara memutuskan koneksi (sockets.tcp.disconnect):
chrome.sockets.tcp.disconnect(socketId);
Menggunakan UDP
Aplikasi Chrome dapat membuat koneksi ke layanan apa pun yang mendukung UDP.
Mengirim data
Berikut ini contoh yang menunjukkan cara mengirim data (sockets.udp.send) melalui jaringan menggunakan UDP:
// 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);
});
});
Menerima data
Contoh ini sangat mirip dengan proses 'Mengirim data' Misalnya, kita menyiapkan sebuah pengendali peristiwa untuk menerima data.
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);
});
});
});
Menggunakan Server TCP
Aplikasi Chrome dapat bertindak sebagai server TCP menggunakan API sockets.tcpServer.
Membuat soket server TCP
Buat soket server TCP dengan sockets.tcpServer.create.
chrome.sockets.tcpServer.create({}, function(createInfo) {
listenAndAccept(createInfo.socketId);
});
Menerima koneksi klien
Berikut adalah contoh yang menunjukkan cara menerima koneksi (sockets.tcpServer.listen) di server TCP soket:
function listenAndAccept(socketId) {
chrome.sockets.tcpServer.listen(socketId,
IP, PORT, function(resultCode) {
onListenCallback(socketId, resultCode)
});
}
Simpan nama sebutan channel socketId
agar Anda dapat menerima koneksi baru nanti
(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)
}
Saat koneksi baru dibuat, onAccept
dipanggil dengan clientSocketId
dari TCP baru
koneksi jarak jauh. ID soket klien harus digunakan dengan API sockets.tcp. Soket dari
akan dijeda secara default. Batalkan jeda dengan sockets.tcp.setPaused untuk mulai menerima
layanan otomatis dan data skalabel.
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);
}
Berhenti menerima koneksi klien
Panggil sockets.tcp.disconnect pada ID soket server untuk berhenti menerima koneksi baru.
chrome.sockets.tcpServer.onAccept.removeListener(onAccept);
chrome.sockets.tcpServer.disconnect(serverSocketId);