Quiero crear una aplicación de paquete de Chrome utilizada solo para LAN, donde una instancia sirve como servidor (host de sesión) y otras instancias deben descubrir el servidor y unirse a la sesión. ¿Se puede lograr esto con chrome.socket?¿Cómo se puede usar chrome.socket para difusión o multidifusión?
he configurar el servidor de esta manera:
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
);
});
El socket está enlazado, puedo verlo en ss -ua
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
Sin embargo, el servidor nunca parece recibir ningún dato. He intentado enviar algunos datos utilizando nc -uv 225.0.0.42 42424
y la API chrome.socket pero sin éxito:
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);
});
});
Esto se traduce en código de error -15
en el lado del cliente y nada en el lado del servidor.
Sospecho que debería haber un indicador de multidifusión configurado en algún lugar, pero no pude encontrarlo.
estoy usando Chrome 23.0.1246.0 versión dev
[Tal vez este enlace lo ayude] (https://github.com/KensakuKOMATSU/chrome-upnp). –
@Cicada Gracias por el enlace. Agregué 'socket.bind (socketId," 0.0.0.0 ", 0, función (res) {...})' antes de la línea 'sendTo' y dejó de quejarse al enviar los datos. Lamentablemente, todavía no sé cómo ** escuchar ** a los paquetes de multidifusión. – hlidka