node.js - Angular 2、Laravel 5.2 和 ioredis 实时应用程序

标签 node.js laravel angular redis

我搜索了将近 10 个小时,才找到 similar question ,尽管我已尽力使之成为可能,但他们应该以应有的方式回答这个问题。对不起,如果这只是一个愚蠢的问题,但要么我不知道,要么它没有按应有的方式工作。

所以我的 angular 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'];
    }
}

我已经打开两个浏览器并尝试运行,

Angular :本地主机:4200

和 Laravel

本地主机:8000/事件

当我点击 laravel 中的 event 路由时,我无法得到任何响应。

正在运行的应用程序

Node :3000

Laravel:8000

Angular 2:4200

非常感谢您的回答。 谢谢

最佳答案

我忘记在我的 Windows 机器上安装 Redis。现在一切似乎都很好。 :) Here's how you can install Redis on Windows .试试@Dherik 的回答

关于node.js - Angular 2、Laravel 5.2 和 ioredis 实时应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569315/

相关文章:

html - 对于 Eventsource 调用,请求 header 未设置为文本/事件流

javascript - 更新到 nextjs@10.4 后找不到模块 'webpack/lib/node/NodeTemplatePlugin'

php - 我如何在 Laravel 中获取特定用户的所有帖子?

具有动态嵌套组件的 Angular 循环依赖项

javascript - 为什么 Angular 4 plunker 可在 Safari 上运行,但不能在 Chrome 上运行

angular - 使用 Gradle 的 spring bootRun 和 Angular buildWatch

javascript - 如何在 Node.js 的帮助下使用站点在 localhost 上工作?

javascript - Node JS 请求和 Cheerio HTML 页面错误

javascript - 尝试发布 AJAX 请求时出现 POST 405(方法不允许)-Laravel 4

laravel - 如何删除多维 Laravel 集合中的列?