0
我一直在尋找了將近10個小時,才發現similar question,尚未事情應該是這樣,雖然我已經盡我所能,以使其能夠回答他們。對不起,如果它只是愚蠢的問題,但要麼我不知道,或者它不是應該的方式工作。角2,Laravel 5.2和ioredis實時應用
所以我的角2組件有類似
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);
});
}
}
我已經在我的laravel根目錄配置socket.js
。
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');
});
而且我對laravel 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'];
}
}
以下事件類和路線我已經打開兩個瀏覽器,並試圖運行,
角:本地主機:4200
而Laravel
本地主機:8000 /事件
我不能得到任何迴應時,我打在laravel event
路線。
運行的應用程序
節點:3000
Laravel:8000
Angular2:4200分
你的答案可以理解很多。 感謝