Как chrome.socket можно использовать для трансляции или многоадресной рассылки?
Я хочу создать Chrome Packaged App, используемое только для локальной сети, где один экземпляр служит сервером (хост сеанса), а другие должны обнаружить сервер и присоединиться к сеансу. Может ли это быть достигнуто сchrome.socket?
Я настроил сервер следующим образом:
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
);
});
Сокет связан, я вижу это в:ss -ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
Но сервер никогда не получает никаких данных. Я попытался отправить некоторые данные, используяnc -uv 225.0.0.42 42424
и API chrome.socket, но безуспешно:
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);
});
});
Это приводит к коду ошибки-15
на стороне клиента и ничего на стороне сервера.
Я подозреваю, что где-то должен быть установлен флаг многоадресной рассылки, но я не могне могу найти это.
Я использую Chrome версии 23.0.1246.0 dev