【问题标题】:React Native with Laravel Echo and Socket.io no responseReact Native 与 Laravel Echo 和 Socket.io 没有响应
【发布时间】:2020-06-11 18:26:28
【问题描述】:

我正在构建一个基本应用程序,我想从 Laravel Echo 实时获取事件数据。我正在使用stack.io。 laravel redis 一切正常,一切运行正常。但是,我没有从 react native 获得我的事件的控制台日志,也没有警告或错误。这是我的代码

React Native App.js

import React from 'react';
import {
  StyleSheet,
  Text,
} from 'react-native';

import Echo from 'laravel-echo';
import socketio from 'socket.io-client';

const echo = new Echo({
  host: 'projectb.io:6001', //tried 127.0.0.1, localhost, ws:// etc...
  broadcaster: 'socket.io',
  client: socketio,
});

echo
    .channel('home')
    .listen('NewMessage', ev => console.log(ev));

const App: () => React$Node = () => {
  return (
    <>
      <Text>The usual stuff</Text>
    </>
  );
};

const styles = StyleSheet.create({

});

export default App;

Laravel 根目录,laravel-echo-server.json:

{
    "authHost": "http://localhost",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}

NewMessage 事件:

class NewMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('home');
    }
}

.env:

BROADCAST_DRIVER=redis
QUEUE_CONNECTION=redis

我正在使用 laravel tinker 来简单地做一个 event(new App\Event\NewMessage("Hello Stack Overflow"))。它确实会立即显示在我的队列和我的 laravel echo 服务器上,但在我的 react native 上,我没有得到任何控制台日志。

我使用 'RedisManager' =&gt; Illuminate\Support\Facades\Redis::class, 而不是'Redis' =&gt; Illuminate\Support\Facades\Redis::class,,因为有一个错误提示找不到redis ext。现在REDIS_CLIENT 设置为predis

【问题讨论】:

    标签: php laravel react-native redis laravel-echo


    【解决方案1】:

    已解决。当我将主机 IP 作为服务器 IP 地址时,它工作正常。希望这可以帮助某人

    【讨论】:

    • 嘿!我需要一些关于控制器的帮助。如何触发事件?另外,在应用程序中呈现更改。
    猜你喜欢
    • 2023-01-12
    • 2017-01-10
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多