Я новичок в javascript и пытаюсь разработать приложение react.js, включая связь через платформу socketcluster. Клиент должен работать не в браузере, а в отдельном файле javascript в фоновом режиме.
Чтобы реализовать это, я установил необходимые модули для сервера (https://github.com/SocketCluster/socketcluster) и клиентский (https://github.com/SocketCluster/socketcluster-client) .
Я следовал инструкциям, и связь между сервером и клиентом (код javascript, встроенный в html, запускаемый в браузере) работала. Но когда я пытаюсь запустить клиент в отдельном файле javascript (gbab-client.js) с «узлом gbam-client.js», это не так. Буду очень благодарен за вашу помощь!
Содержимое gbab-client.js:
const socketClusterClient = require('socketcluster-client/socketcluster');
const options = {
port: 2222
};
// Initiate the connection to the server
const socket = socketClusterClient.connect(options);
console.log('Connecting...');
socket.on('connect', function () {
console.log('CONNECTED');
});
// Listen to an event called 'rand' from the server
socket.on('rand', function (num) {
console.log('RANDOM: ' + num);
});
Сообщение об ошибке:
$ node gbam-client.js
C:\...\node_modules\socketcluster-client\socketcluster.js:1306
return new WebSocket(uri, null, options);
^
TypeError: WebSocket is not a constructor
at createWebSocket (C:\...\node_modules\socketcluster-client\socketcluster.js:1306:12)
at new SCTransport (C:\...\node_modules\socketcluster-client\socketcluster.js:1337:18)
at SCClientSocket.connect.SCClientSocket.open (C:\...\node_modules\socketcluster-client\socketcluster.js:558:22)
at new SCClientSocket (C:\...\node_modules\socketcluster-client\socketcluster.js:433:10)
at Object.create (C:\...\node_modules\socketcluster-client\socketcluster.js:198:31)
at Object.module.exports.create (C:\...\node_modules\socketcluster-client\socketcluster.js: 14:18)
at Object.<anonymous> (C:\...\gbam-client.js:12:36)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
ОБНОВЛЕНИЕ:
Я нашел решение. Пункт назначения require был неправильным.
Это исправленный код (gbam-client.js):
const socketClusterClient = require('socketcluster-client');
const options = {
hostname:'localhost',
port: 2222
};
...