Ошибка типа клиента SocketCluster: WebSocket не является конструктором

Я новичок в 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
};

...

person Son-Goku    schedule 02.09.2019    source источник
comment
Для тестирования я написал сервер веб-сокетов и клиент. Это работает нормально. Они могут общаться.   -  person Son-Goku    schedule 03.09.2019


Ответы (1)


Возможно, ваша версия ws (библиотека WebSocket) несовместима с socketcluster, попробуйте обновить ее WS

person talalUcef    schedule 02.09.2019
comment
Я обновил все свои модули, но они не работают... (Не обновились два модуля: экспресс и статический) - person Son-Goku; 03.09.2019