【发布时间】:2020-09-17 16:21:04
【问题描述】:
在 laravel redis 上一切正常,一切运行正常,没有问题。但是,我没有从 react native 获得我的事件的控制台日志,也没有警告或错误。这是我的代码
App.js
import Echo from 'laravel-echo/dist/echo';
import Socketio from 'socket.io-client';
const echo = new Echo({
broadcaster: 'socket.io',
host: 'http://localhost:6001',
client: Socketio,
auth: {
headers: {
'Authorization': 'Bearer 7ebee00f74965d11cae413998a13c802',
},
},
});
let orderId = 9;
echo.channel('app_database_order.' + orderId)
.listen('.OrderStatusEvent', (e) => {
console.log('event: ', e);
});
这是我的 Laravel 回显服务器控制台
⚠ Starting server in DEV mode...
✔ Running at localhost on port 6001
✔ Channels are ready.
✔ Listening for http events...
✔ Listening for redis events...
Server ready!
Channel: app_database_order.9
Event: OrderStatusEvent
Channel: app_database_order.9
Event: OrderStatusEvent
Channel: app_database_order.9
Event: OrderStatusEvent
laravel-echo-server.json:
{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "AppId",
"key": "7ebee00f74965d11cae413998a13c802"
}
],
"database": "redis",
"databaseConfig": {
"redis": {
"port":"6379",
"host":"127.0.0.1",
"db":"0",
"password":"0TaEotyBIzOSym6zEXdsD2f2VCiPJmj4s/2nkGgyC4BBnm7CVUphOPCJ3LYoEUWuuqLokqJ/CCrJ3HqR"
},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
},
"publishPresence": true
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "*",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
我正在尝试通过从邮递员调用此 API 来触发事件:
Route::post('/ship', function (Request $request)
{
$order_id = $request->input('order_id');
$order = Order::findOrFail($order_id);
event(new OrderStatus($order));
return true;
});
订单状态事件:
class OrderStatus implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $order_id;
public function __construct(Order $order)
{
$this->order_id = $order->id;
}
public function broadcastOn()
{
return new Channel('order.'.$this->order_id);
}
public function broadcastAs() {
return 'OrderStatusEvent';
}
}
我正在使用 expo 运行 react-native,所以日志应该出现在 expo 控制台中, 什么都没有出现。
我在这个问题上工作了 3 天,但没有解决方案 :(。 请帮忙。
【问题讨论】:
标签: laravel react-native socket.io real-time laravel-echo