Tôi muốn tạo Ứng dụng đóng gói Chrome chỉ được sử dụng cho mạng LAN, trong đó một phiên bản hoạt động dưới dạng máy chủ (máy chủ phiên) và các phiên bản khác phải khám phá máy chủ và tham gia phiên. Điều này có thể đạt được với chrome.socket không?Làm cách nào để chrome.socket có thể được sử dụng để phát sóng hoặc phát đa hướng?
Tôi đã thiết lập máy chủ như thế này:
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
);
});
Các ổ cắm bị ràng buộc, tôi có thể nhìn thấy nó trong ss -ua
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
Nhưng các máy chủ không bao giờ dường như nhận được bất kỳ dữ liệu. Tôi đã cố gắng gửi một số dữ liệu sử dụng nc -uv 225.0.0.42 42424
và API chrome.socket nhưng không thành công:
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);
});
});
Điều này dẫn đến mã lỗi -15
về phía khách hàng và không có gì ở phía máy chủ.
Tôi nghi ngờ có một cờ đa hướng được đặt ở đâu đó nhưng tôi không thể tìm thấy nó.
Tôi đang sử dụng Chrome Version 23.0.1246.0 dev
[Có thể liên kết này sẽ giúp bạn] (https://github.com/KensakuKOMATSU/chrome-upnp). –
@Cicada Cảm ơn bạn đã liên kết. Tôi đã thêm 'socket.bind (socketId," 0.0.0.0 ", 0, function (res) {...})' trước dòng 'sendTo' và nó ngừng phàn nàn khi gửi dữ liệu. Thật không may, tôi vẫn không biết làm thế nào để ** nghe ** các gói multicast. – hlidka