问题描述
我一直在关注这个 blog post 由 pusher 在他们的官方网站上使用 laravel + pusher 构建基本的聊天应用程序。
我已经根据博客彻底遵循了每一步,我会到处搜索,因为那里没有提到一些细节。
我可以在用户之间发送消息(保存在数据库表中)但不能在用户端实时更新。
以下是我按下发送消息按钮时收到的错误消息:
事件/MessageSent.PHP
use App\User;
use App\Message;
class MessageSent implements Shouldbroadcast
{
use dispatchable,InteractsWithSockets,SerializesModels;
public $user;
public $message;
public function __construct(User $user,Message $message)
{
$this->message = $message;
$this->user = $user;
}
public function broadcastOn()
{
return new PrivateChannel('chat');
}
}
broadcast::channel('chat',function ($user) {
return Auth::check();
});
web.PHP
Auth::routes();
Route::get('/','ChatsController@index');
Route::get('messages','ChatsController@fetchMessages');
Route::post('messages','ChatsController@sendMessage');
ChatsController.PHP
use App\Events\MessageSent;
use App\Message;
use Illuminate\Http\Request;
use Auth;
class ChatsController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('chat');
}
public function fetchMessages()
{
return Message::with('user')->get();
}
public function sendMessage(Request $request)
{
$user = Auth::user();
$message = $user->messages()->create([
'message' => $request->message,]);
broadcast(new MessageSent($user,$message))->toOthers();
return ['status' => 'Message Sent!'];
}
}
我使用的是 Laravel 5.5 版,pusher 6.1。
这篇博文是为 laravel 5.4 和 pusher 2.6 编写的。
是版本差异导致了这个问题吗? 感谢您的帮助。
解决方法
解决办法是降级pusher版本。
composer require pusher/pusher-php-server ^4.1
仍会为最新版本寻找合适的答案。