【问题标题】:Can I run a node.js server on a VPS but broadcast events to it from a go daddy hosted laravel backend?我可以在 VPS 上运行 node.js 服务器,但从 go daddy 托管的 laravel 后端向它广播事件吗?
【发布时间】:2017-09-01 21:38:54
【问题描述】:

我有一个应用程序,其后端当前托管在 godaddy 上。后端是 Laravel 5.4,前端是 Ionic 2。我想在现有应用程序中添加实时聊天。我将使用 socket.io 和 redis。所有聊天消息都将保存到我的数据库(在 godaddy 上)。 Go daddy 不允许运行节点服务器,除非您购买 vps,但他们收费过高

我想知道这种设置是否可行。

  • 用户发送消息
  • 消息通过 POST 请求从我的前端发送到我的后端以保存在数据库中。
  • 消息保存后,从 laravel 向前端发送广播消息/事件

现在我的问题是我可以使用 A2 托管(vps 5 美元)之类的东西来仅托管我的 socket.io 和 redis 服务器。所以基本上我想知道我能否将消息从 laravel(去爸爸)广播到 A2 主机,并让我的前端监听 A2 服务器?或者我是否必须在 A2 主机上托管我的整个后端,因为我无法将消息广播到 A2 主机,除非服务器也在 go daddy 上运行

希望我的问题是有道理的

我的 server.js 文件(在 laravel 根目录下)

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Redis = require('ioredis');

var redis = new Redis();
redis.psubscribe('private-chat.*', function(err, count) {
    console.log('psubscribe');
});

redis.on('pmessage', function(subscribed, channel, message) {
    console.log('pmessage', subscribed, channel, message);
    message = JSON.parse(message);
    io.emit(channel + ':' + message.event, message.data);
});
http.listen(3000, function(){
    console.log('Listening on Port 3000');
});

发送广播

// save it to the database and than 
event(new NewMessagePosted($message));

广播到频道

public function broadcastOn()
{

    return new PrivateChannel('chat.'. $this->message->chatID);
}

【问题讨论】:

    标签: node.js laravel sockets socket.io hosting


    【解决方案1】:

    如果我理解这个问题,那么您想知道您是否必须在 A2 上托管所有内容才能使您的聊天应用程序正常工作。答案是不。我有一个独立运行的节点套接字服务器,它向 DigitalOcean、AWS 和 Heroku 上托管的多个应用程序发出消息。只要一切都设置好并且安全,并且每个套接字客户端都在侦听来自远程套接字服务器的正确事件,我就看不到问题所在。

    【讨论】:

    • 是的,这是正确的,我想知道我是否可以将聊天和后端托管分开,因为我不想将所有内容都移过来。用户发送消息后,将其保存在数据库中,并从 laravel 向前端正在侦听的私有频道发出广播事件。我只是很困惑如何从后端连接到服务器进行广播。
    • 嘿,@derrickrozay 你对你的问题有什么解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2014-12-14
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多