SORU
14 Aralık 2010, Salı


Nasıl/nodejs ile ABONE redis YAYINLAMAK veri değerleri değiştirmek için müşterilerine bildirmek için kullanılır?

Olay güdümlü/NodeJS ve Redis ile başvuru abone yayınlamak yazıyorum. Veri Redis değişim değerleri web müşterilerine bildirmek için nasıl bir örnek istiyorum.

CEVAP
15 Aralık 2010, ÇARŞAMBA


ESKİ sadece bir referans kullanın

Bağımlılıklar

kullanır, *, *21expresssocket.io ve son ama en az değil sample code medya yangın.

Node.js etmesinin önünü olmayan(root) yükleyin

Öncelikle Eğer Henüz bunu yapmış değil () node.js npm in 30 seconds (gerekir çünkü doğru şekilde yükleyinDEĞİLçalışma etmesinin önünükök):

echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl http://npmjs.org/install.sh | sh

Bağımlılıkları yükleyin

Yüklü düğüm etmesinin önünü sonra yayımlayarak bağımlılıkları yüklemeniz gerekir:

npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)

İndir örneği

mediafire tam örnek indirebilirsiniz.

Sıkıştırılmış paket

unzip pbsb.zip # can also do via graphical interface if you prefer.

Zip içinde ne var

./app.js

const PORT = 3000;
const HOST = 'localhost';

var express = require('express');

var app = module.exports = express.createServer();

app.use(express.staticProvider(__dirname   '/public'));

const redis = require('redis');
const client = redis.createClient();

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

if (!module.parent) {
    app.listen(PORT, HOST);
    console.log("Express server listening on port %d", app.address().port)

    const socket  = io.listen(app);

    socket.on('connection', function(client) {
        const subscribe = redis.createClient();
        subscribe.subscribe('pubsub'); //    listen to messages from channel pubsub

        subscribe.on("message", function(channel, message) {
            client.send(message);
        });

        client.on('message', function(msg) {
        });

        client.on('disconnect', function() {
            subscribe.quit();
        });
    });
}

./public/index.html

<html>
<head>
    <title>PubSub</title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="/javascripts/jquery-1.4.3.min.js"></script>
</head>
<body>
    <div id="content"></div>
    <script>    
        $(document).ready(function() {
            var socket = new io.Socket('localhost', {port: 3000, rememberTransport: false/*, transports: ['xhr-polling']*/});
            var content = $('#content');

            socket.on('connect', function() {
            });

            socket.on('message', function(message){
                content.prepend(message   '<br />');
            }) ;

            socket.on('disconnect', function() {
                console.log('disconnected');
                content.html("<b>Disconnected!</b>");
            });

            socket.connect();
        });
    </script>
</body>
</html>

Server başlatın

cd pbsb    
node app.js

Tarayıcı başlatın

Eğer google chrome başlarsan iyi(websockets nedeniyle destek, ama gerekli değil). http://localhost:3000 örnek(başlangıçta bir şey ama başlık PubSub görmüyorum) görmek için ziyaret edin.

Ama publish Kanal pubsub bir ileti görmelisiniz. Biz tarayıcı "Hello world!" yayınlamak aşağıda.

Dan ./redis-cli

publish pubsub "Hello world!"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007