Desidero creare un'app con pacchetto Chrome utilizzata solo per LAN, in cui un'istanza funge da server (host di sessione) e altre istanze devono scoprire il server e partecipare alla sessione. Questo può essere ottenuto con chrome.socket?Come può essere usato chrome.socket per la trasmissione o il multicasting?
Ho installato il server in questo modo:
var socket = chrome.socket || chrome.experimental.socket;
socket.create('udp', {}, function(createInfo) {
var publish_socket = createInfo.socketId;
socket.bind(publish_socket, '225.0.0.42', 42424, function (result) {
if (result < 0) console.error(result); // this works fine
socket.recvFrom(publish_socket, null, function(recvFromInfo) {
console.log(recvFromInfo); // UNABLE TO MAKE THIS HAPPEN
});
});
// Chrome won't let me listen for app window closing
var cleanup_timer;
cleanup_timer = setInterval(function(){
if (requesting_window.closed) {
socket.destroy(publish_socket);
clearInterval(cleanup_timer);
}
},
5000
);
});
Il socket è associato, posso vederlo in ss -ua
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
ma il server non sembra mai di ricevere i dati. Ho provato l'invio di alcuni dati utilizzando nc -uv 225.0.0.42 42424
e l'API chrome.socket, ma senza successo:
socket.create('udp', {}, function(socketInfo) {
var socketId = socketInfo.socketId;
socket.sendTo(socketId, str2ab("discovering"), '225.0.0.42', 42424, function(writeInfo) {
if (writeInfo.bytesWritten < 0) console.error(writeInfo);
});
});
Ciò si traduce in codice di errore -15
sul lato client e nulla sul lato server.
Ho il sospetto che ci dovrebbe essere una bandiera multicast da qualche parte ma non ho potuto trovarla.
sto usando Chrome versione 23.0.1246.0 dev
[Forse questo collegamento ti aiuterà] (https://github.com/KensakuKOMATSU/chrome-upnp). –
@Cicada Grazie per il link. Ho aggiunto 'socket.bind (socketId," 0.0.0.0 ", 0, function (res) {...})' prima della riga 'sendTo' e ha smesso di lamentarsi durante l'invio dei dati. Purtroppo ancora non so come ** ascoltare ** i pacchetti multicast. – hlidka