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 mengetahui informasi selengkapnya, lihat Socket UDP, Socket TCP, dan Sockets TCP Server API.
Persyaratan manifes
Untuk Aplikasi Chrome yang menggunakan TCP atau UDP, tambahkan entri sockets ke manifes dan tentukan aturan izin endpoint IP. Contoh:
"sockets": {
"udp": {
"send": ["host-pattern1", ...],
"bind": ["host-pattern2", ...],
...
},
"tcp" : {
"connect": ["host-pattern1", ...],
...
},
"tcpServer" : {
"listen": ["host-pattern1", ...],
...
}
}
Sintaks entri "host-pattern" soket 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 deskripsi mendetail tentang sintaksis.
Contoh entri manifes soket:
{ "tcp": { "connect" : "*:23" } }
–menghubungkan pada port 23 dari host apa pun{ "tcp": { "connect" : ["*:23", "*:80"] } }
–menghubungkan pada port 23 atau 80 dari host apa pun{ "tcp": { "connect" : "www.example.com:23" } }
–menghubungkan port 23 dari www.example.com{ "tcp": { "connect" : "" } }
–menghubungkan port dari host apa 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 yang memproses di port lokal 8080
Menggunakan TCP
Aplikasi Chrome dapat terhubung ke layanan apa pun yang mendukung TCP.
Menghubungkan ke soket
Berikut adalah contoh yang menunjukkan cara menghubungkan (sockets.tcp.connect) ke soket:
chrome.sockets.tcp.create({}, function(createInfo) {
chrome.sockets.tcp.connect(createInfo.socketId,
IP, PORT, onConnectedCallback);
});
Simpan handle ke socketId
sehingga nantinya Anda 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. Untuk mempelajari ArrayBuffers, lihat ringkasan, array berjenis JavaScript, serta 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 cara memutuskan koneksi (sockets.tcp.disconnect):
chrome.sockets.tcp.disconnect(socketId);
Menggunakan UDP
Aplikasi Chrome dapat terhubung ke layanan apa pun yang mendukung UDP.
Mengirim data
Berikut adalah 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 contoh 'Mengirim data', kecuali kami menyiapkan 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 sockets.tcpServer API.
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 soket server TCP:
function listenAndAccept(socketId) {
chrome.sockets.tcpServer.listen(socketId,
IP, PORT, function(resultCode) {
onListenCallback(socketId, resultCode)
});
}
Pertahankan handle ke socketId
sehingga Anda dapat menerima koneksi baru
(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
koneksi TCP
baru. ID soket klien harus digunakan dengan API sockets.tcp. Soket koneksi baru
dijeda secara default. Lanjutkan dengan sockets.tcp.setPaused untuk mulai menerima data.
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);