0

大家好,我在 redis pub/sub 中遇到问题,因为我的客户端没有显示我在 redis-cli 中发布的消息。我使用了在 stackoverflow 中找到的代码并做了一些修改。这是链接和代码。希望你能帮帮我,我的目标是在redis-cli中使用redis publish将消息发布到客户端index.html。我以前做过这个,但我不能让它再次工作。提前谢谢各位。

这是我的客户 index.html

<html>
<head>
    <title>PubSub</title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <!-- <script src="/javascripts/socket.js"></script> -->
</head>
<body>
    <div id="content"></div>
    <script>
            var socket = io.connect('http://localhost:3000');    
            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.js

var express = require('express');
var app = express();
var redis = require('redis');
var http = require('http');
var server = http.createServer(app);
var socket = require('socket.io').listen(server);
var publish = redis.createClient();

app.listen(3000);
    console.log("Express server listening on port 3000")

    app.get('/', function (req,res) {
        res.sendfile(__dirname + '/public/index.html');
    });

socket.on('connection', function (client) {
        var subscribe = redis.createClient();
        subscribe.subscribe('pubsub');

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

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

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

1 回答 1

1

Redis 不会为您向连接的客户端发送数据。您必须指示 Socket.IO 发出数据:

subscribe.on("message", function (channel, message) {
  socket.emit('message', message);
});
于 2013-10-15T02:29:08.670 回答