Я пытаюсь подключиться к серверу XMPP, используя библиотеку StropheJS, но не могу найти правильный способ интегрировать его в мое приложение ReactionJS. Теперь мой код работает, экспортируя объект Strophe, добавив эту строку в файл пакета strophe.js в папке node_modules {{Х0}} но я не думаю, что это правильный путь. Может кто-нибудь подсказать мне, как это сделать. В моем файле js я импортирую строфу, добавив строку:

    // This is JS
    import React, { Component } from 'react';    
    import Strophe from "strophe";

    class Login extends Component {
      constructor(){
        super();
        this.state = {
          connection: null
        }
      }
      componentWillMount(){
        this.setState({
          connection : new Strophe.Connection("http://localhost:7070/http-bind/")
        });
      }

Я хочу выход без изменения исходного файла пакета strophe. Вот мой полный код, если вы хотите посмотреть: https : //github.com/cravi24/clientApp/blob/master/src/Components/Login.js

1
Ravi Chaudhary 11 Дек 2016 в 23:15

3 ответа

Лучший ответ

Наконец-то разобрался с проблемой моего кода. Strophe - это глобальный объект в библиотеке Strophe, и как только я импортирую эту библиотеку в свое приложение реагирования, она становится частью объекта window. Следовательно, мне нужно использовать это так:

new window.Strophe.Connection("http://localhost:7070/http-bind/")

Вместо

new Strophe.Connection("http://localhost:7070/http-bind/")

Ранее я ожидал, что объект strophe будет доступен в моем классе как локальный var, но, поскольку он не был экспортирован в библиотеку strophe, я не смог получить к нему доступ.

1
Ravi Chaudhary 12 Дек 2016 в 07:48

Основная задача Strophe - включить веб-приложения XMPP в реальном времени, которые запускаются в любом браузере. Клиентская библиотека, которая привязывается к объекту окна.

Используйте как ниже, чтобы использовать его в вашем React View.

import React, {Component} from 'react';
import Strophe from "strophe";

class Login extends Component {
  constructor() {
    super();
    this.state = {
      connection: null
    }
  }
  componentWillMount() {
    this.setState({
      connection: new window.Strophe.Connection("http://localhost:7070/http-bind/")
    });
  }

Если вы хотите использовать его в Node Side. Используйте Node Strophe и ниже приведен фрагмент кода.

// Configuration 
var server = 'bosh.my-server.com';
var jid = 'user@my-server.com';
var password = '';

// Requirements 
var strophe = require("node-strophe").Strophe;
var Strophe = strophe.Strophe;

// Set-up the connection 
var BOSH_SERVICE = 'https://' + server + '/http-bind';
var connection = new Strophe.Connection(BOSH_SERVICE);

// Log XMPP 
connection.rawInput = connection.rawOutput = console.log;

// Connect 
connection.connect(jid, password);
0
Venkat.R 13 Дек 2016 в 01:27

Для другой ссылки, если вы импортируете библиотеку Strophe из пакета и используете new Strophe.Connection ("http: // localhost: 7070 / http-bind / ") этот синтаксис. Для этого вам нужно использовать import {Strophe} из "strophe.js"; . Вот как вы можете использовать новый Strophe.Connection без оконного объекта.

0
preshita soni 6 Сен 2019 в 07:03