본문 바로가기

Programming!

Redis NodeJS 로 구독하기.

1. 가정 : redis 설치완료.
2. 가정 : nodejs 설치완료.

자 우선 redis pub/sub 이벤트를 잡아서 클라이언트의 함수 호출 하는 놈을 만들어보자.

myredis.js

var io = require('socket.io');

var app = require('express').createServer();

var redis = require('redis');

var sys = require('util');


io = io.listen(app);

var subscriber = redis.createClient(6379, 'localhost');

var publisher  = redis.createClient(6379, 'localhost');

    subscriber.on("error", function(err) {

        sys.debug(err);

    });

    publisher.on("error", function(err) {

        sys.debug(err);

    });

    subscriber.setMaxListeners(0);

    subscriber.subscribe("chat");


    io.sockets.addListener('connection', function(socket){

        console.log(socket.id);

        subscriber.on("message", function(channel, message) {

            console.log(message);

            socket.emit('chat', {data:message});

        });

    });



app.listen(3000);




myclient.js

<html>

<head>

    <title><%= title %></title>

    <script src="socket.io.js"></script>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

    <script type="text/javascript">

        var socket = io.connect('http://node.mynode.com:3000');

        socket.on('chat', function(data){

            alert(data.data);

        });

        /*

        (function poll(){

            $.ajax(

                {

                type:'get',

                url: "http://node.mynode .com:3000",

                success: function(data){

                $('#textbox').html(data);

                },

                complete: poll,

                timeout: 30000,

                async: true,

                cache: false,

            });

        })();

        */

    </script>

</head>

<body>




redis publish 를 해보자.

$ redis-cli
redis 127.0.0.1:6379> publish "chat" "도자사요!'



결과는 


이거 하면서 Websocket을 보게 되고... Redis 다시 보게되고....아 ㅅㅂ 이 직종은 너무 엮여있는게 많아.. 거기에 다 공부거리야.. 머리가 터질라그래..