Я использую socket.io и node.js для сокетного соединения, я отправляю данные через API в сокет, используя код ниже laravel.
после всех процедур прекрасно работает в файле socket.js, который работает в терминале с узлом socket.js. Я просто хочу получить ответ на ту же функцию, где я публикую событие, возможно ли с этим или мне нужно сделать что-то еще.
Примечание: все идеально, просто нужен ответ в той же функции, где я публикую
Спасибо
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Http\Requests;
use LRedis;
class MessageController extends Controller{
public function store(Request $request){
$data = [
'id'=>1,
'game_name'=>'PUB',
];
$redis = LRedis::connection();
$redis->publish('message', json_encode($data));
}
}
////// node node.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(3000, function () {
console.log('Listening on Port 3000');
});
redisClient.subscribe('message');
redisClient.on("message", function (channel, data) {
const dataj = JSON.parse(data);
console.log(data);
///// send data to client which is connected with me
io.emit("eventsend", {
"id": dataj.id,
"game": dataj.game,
});
});
io.on('connection', function (socket) {
/////////////////////// send by client
socket.on("eventrec", function (data) {
console.log(data);
});
//console.log("Connected!");
/////////////////////// send by client
socket.on("success_repo", function (data) {
////////// i want this response in my laravel file where i publish the message event
console.log(data);
});
socket.on('disconnect', function () {
redisClient.unsubscribe('message');
});
});