Если браузер открывает соединение с удаленным сервером, возможно ли получить доступ к этому же соединению через Javascript?
У меня в сети есть небольшой модуль Ethernet, который я программирую сортироватьпримерно так (псевдокод):
private var socket
while(true) {
if(socket is disconnected) {
open socket
listen on socket (port 80)
}
if(connection interrupt) {
connect socket
}
if(data receive interrupt) {
serve
}
if(disconnection interrupt) {
disconnect socket
}
}
Дело в том, что он прослушивает один сокет для HTTP-запросов и обслуживает их.
В моем веб-браузере яможет подключиться к устройству, сделав HTTP-запрос GET для некоторого HTML / JS, который я написал, и это работает. На сокете открывается соединение, и файлы возвращаются в виде HTTP-ответов.
Теперь я хочу нажать кнопку на веб-странице, чтобы браузер отправил HTTP-запрос POST по тому же соединению. В моем Javascript у меня есть (отредактировано и отформатировано для ясности):
// This function sends an HTTP request
function http(type, url, data, callbacks) {
// make a new HTTP request
var request = new XMLHttpRequest();
// open a connection to the URL
request.open(type, url + (data ? "?" + data : ""));
// add headers
if(type == "POST")
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// register callbacks for the request
Object.keys(callbacks).forEach(function(callback) {
request[callback] = function() {
callbacks[callback](request.responseText);
};
});
// send and return the request
request.send();
return request;
}
// Here is where I call the function
http("POST", // use POST method
"http://192.168.1.99", // IP address of the network device
dataToSend, // the data that needs to be sent
{ // callbacks
onloadend: function(data) {
console.log("success. got: " + data); // print 'success' when the request is done
},
onerror: function(data) {
console.log("There was an error."); // print 'error' when it fails
console.log(data);
}
}
);
Проблема здесь в том, что этот открывает новое соединение с устройством, но я хочу использовать то же самоесокет, к которому браузер уже подключен. Возможно ли это, и если да, то как?