아하
생활

생활꿀팁

상냥한여새212
상냥한여새212

라라벨 웹소켓(pusher, redis) 문의

안녕하세요.

다름이 아닌, 라라벨에서 웹소켓 사용할때에 pusher, redis 같은 경우에는 같은 서버인 내부적으로만 사용이 가능한거죠?

nodejs <> laravel 이런 방식의 소켓 연결은 불가한거죠?

관련 내용 링크

Laravel Broadcast — pusher(X), Laravel websocket(O) 편

https://medium.com/sjk5766/laravel-broadcast-pusher-x-laravel-websocket-o-%ED%8E%B8-b48981a4178d

Laravel Broadcast — redis 편

https://medium.com/sjk5766/laravel-broadcast-redis-%ED%8E%B8-74be51464a19

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 초록푸들257
    초록푸들257

    이해하신것 처럼 pusher와 redis는 PHP기반 laravel의 casting을 위한 서비스입니다.

    일반적으로 Nodejs와의 통신을 위해서는 pusher 혹은 redis를 socket.io와 페어링을 하는 방법일 것입니다.

    import Echo from "laravel-echo" window.io = require('socket.io-client'); window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname + ':6001' });

    실제 적용 코드는 아래와 같습니다.

    • php

    class SocketController extends Controller{ public function sendMessage(){ $redis = Redis::connection(); $redis->publish('message','text'); return 'done'; }

    • javascript (nodejs)

    module.exports = function(io){ var express = require('express'); var router = express.Router(); var redis = require('redis'); // routing(생략) router.get( ... ... ) // socket io.on('connection',function(socket){ var redisClient = redis.createClient(); redisClient.subscribe('message'); redisClient.on('message',function(message){ socket.emit(channel, message); }); }); return router; }

    함께 참고하는데 도움이 될 자료를 기재드립니다.