【发布时间】: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