Ich möchte eine Chrome Packaged App nur für LAN erstellen, wobei eine Instanz als Server (Sitzungshost) dient und andere Instanzen den Server erkennen und der Sitzung beitreten müssen. Kann dies mit chrome.socket erreicht werden?Wie kann chrome.socket für Broadcasting oder Multicasting verwendet werden?
Ich habe den Server wie folgt aufgebaut:
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
);
});
Der Sockel gebunden ist, ich es in ss -ua
sehen:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
Aber der Server scheint nie irgendwelche Daten zu empfangen. Ich habe versucht, mit nc -uv 225.0.0.42 42424
und die chrome.socket API einige Daten zu senden, aber ohne Erfolg:
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);
});
});
Dies führt zu Fehlercode -15
auf der Client-Seite und nichts auf der Serverseite.
Ich vermute, es sollte irgendwo ein Multicast-Flag gesetzt sein, aber ich konnte es nicht finden.
Ich bin mit Chrome Version 23.0.1246.0 dev
[Vielleicht hilft Ihnen dieser Link] (https://github.com/KensakuKOMATSU/chrome-upnp). –
@Cicada Danke für den Link. Ich habe 'socket.bind (socketId," 0.0.0.0 ", 0, function (res) {...})' vor der 'sendTo'-Zeile hinzugefügt und es hörte auf, sich zu beschweren, wenn ich die Daten sendete. Leider weiß ich immer noch nicht, wie ich den Multicast-Paketen ** zuhöre. – hlidka