私はほぼ10時間を探していて、ちょうどsimilar questionが見つかりました。申し訳ありませんが、それはちょうど愚かな質問ですが、どちらか私は認識していないか、それはすべきである方法で動作していない。角2、ララベル5.2とioredisリアルタイムアプリ
だから私の角度2の成分は、私は私のlaravelルートディレクトリにsocket.js
を構成した
import * as io from "socket.io-client";
export class TasklistComponent implements OnInit {
ngOnInit() {
var socket = io("http://localhost:3000");
socket.on("test-channel:TasklistModified", function(message) {
console.log(message);
});
}
}
のようなものがあります。
var app = require('express');
var http = require('http').Server(app);
var io = require("socket.io")(http);
var Redis = require("ioredis");
var redis = new Redis({
scheme: 'localhost',
port: 6379, // Redis port
host: '127.0.0.1'
});
redis.subscribe('test-channel', function(err, count) {
//..
});
redis.on('message', function(channel, message) {
console.log("Message Recieved", channel, message);
message = JSON.Parse(message);
io.emit(channel + ":" + message.event, message.payload);
});
http.listen(3000, function() {
console.log('listening on port 3000');
});
そして私は、私が開いている2つのブラウザをしましたし、実行しようとした、
角度routes.php
Route::get('event', function() {
event(new TasklistModified([
'name' => 'test'
]));
});
//Event Class
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TasklistModified extends Event implements ShouldBroadcast
{
use SerializesModels;
public $tasklist;
public function __construct($tasklist)
{
$this->tasklist = $tasklist;
}
public function broadcastOn()
{
return ['test-channel'];
}
}
laravelに次のイベントクラスとルートをしました:localhostを:4200
そしてLaravel
localhost:8000/event
laravelでevent
ルートをヒットしたときに応答が得られませんでした。
ノードを実行
アプリケーション:3000
Laravel:8000
Angular2は:4200の
あなたの答えは、多くのことを理解されるであろう。 ありがとう