В настоящее время я пробую Webpack и хочу отправить запрос WebSocket на определенный URL-адрес, однако для правильной проверки мне нужно установить заголовок Origin для моего сокета. Это легко сделать в Node.js с помощью WS lib, поскольку конструктор WebSocket принимает параметры. Однако, если я попытаюсь использовать WS lib и упаковать ее с помощью Webpack, я получаю сообщение об ошибке:
main.js:formatted:1542 Uncaught Error: ws does not work in the browser. Browser clients must use the native WebSocket object
Я понимаю, в чем проблема, однако не понимаю, как мне выполнить свою задачу, поскольку стандартная библиотека WebSocket не позволяет редактировать заголовки своих запросов.
Любая помощь будет оценена по достоинству.
Код с WS
import msgpack from 'msgpack-lite';
import WebSocket from 'ws';
function component() {
var connection = new WebSocket('wss:social.krunker.io/ws',{
headers: {
origin: "https://krunker.io" // add origin header
}
});
connection.binaryType = "arraybuffer";
connection.onmessage = function(event) {
let data = msgpack.decode(new Uint8Array(event.data)); // decode the binary data with msgpack.decode
console.info("Incoming ->", data);
};
return element;
}
document.body.appendChild(component());
^ Выдает мне ошибку "ws не работает в браузере"
Код со стандартной библиотекой WebSocket
import msgpack from 'msgpack-lite';
function component() {
var connection = new WebSocket('wss:social.krunker.io/ws');
connection.binaryType = "arraybuffer";
connection.onmessage = function(event) {
let data = msgpack.decode(new Uint8Array(event.data)); // decode the binary data with msgpack.decode
console.info("Incoming ->", data);
};
return element;
}
document.body.appendChild(component());
Подключение работает, однако ответ на запрос является сообщением об ошибке, поскольку мое происхождение неверно.
У меня есть этот пример, который безупречно работает в Node.js и Electron, однако мне нужно использовать другой протокол, чем File: //, чтобы иметь возможность вызывать капчи позже.
Единственное решение, которое я вижу в настоящее время, - это запустить мой html-файл на локальном сервере и отредактировать мой хост-файл, чтобы указать его IP-адрес на желаемое происхождение, чтобы обмануть веб-браузер.
@ Fakt309 Я добавил это в свой пост



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я решил использовать другой подход к своей задаче. Чтобы обойти ограничение Origin, я в конечном итоге использовал Express вместе с Socket.io для создания веб-страницы, которая взаимодействует с моим сервером узла, который выполняет всю тяжелую работу по подключению, веб-страница используется для извлечения и решения капчи, а также работает как пользовательский интерфейс для моего экземпляра Node.
Вы можете показать свой код?