Невозможно подписаться на тему, используя @ stomp / stompjs - PullRequest
0 голосов
/ 23 октября 2018

Вот часть моего компонента React:

import React from 'react';
import { Client } from '@stomp/stompjs';

class Balance extends React.Component {

    componentDidMount() {
        const client = new Client({
            brokerURL: 'ws://localhost:8080/stomp',
            debug: (str) => {
                console.log(str);
            },
        });

        client.onConnect(() => {
            console.log('onConnect');
            client.subscribe('/topic/balance', message => {
                console.log(message);
            })
        });

        client.activate();
    }
...

Похоже, соединение было установлено в соответствии с выводом отладки на консоль браузера:

Opening Web Socket...
Web Socket Opened...
>>> CONNECT
accept-version:1.0,1.1,1.2
heart-beat:10000,10000
Received data
<<< CONNECTED
heart-beat:0,0
version:1.2
content-length:0
connected to server undefined

Однако я нев консоли не появляется сообщение «onConnect», что означает, что client.onConnect никогда не запускался.

Поэтому я не могу подписаться на тему.

В чем может быть проблема?

ОБНОВЛЕНИЕ: enter image description here

1 Ответ

0 голосов
/ 26 октября 2018

Согласно автору, это была путаница в синтаксисе библиотеки.

Исправленный код из моего вопроса выглядит следующим образом:

import React from 'react';
import { Client } from '@stomp/stompjs';

class Balance extends React.Component {
  componentDidMount() {
    // The compat mode syntax is totally different, converting to v5 syntax
    // Client is imported from '@stomp/stompjs'
    this.client = new Client();

    this.client.configure({
      brokerURL: 'ws://localhost:8080/stomp',
      onConnect: () => {
        console.log('onConnect');

        client.subscribe('/topic/balance', message => {
            console.log(message);
        })
      },
      // Helps during debugging, remove in production
      debug: (str) => {
        console.log(new Date(), str);
      }
    });

    this.client.activate();
  }
...

Iсоздал полный рабочий пример в моем репо .

...