0

我有一个 PHP 代码,它将数据发布到一个名为“MESSAGE_FROM_MARS”的频道。片段如下:

    function send_data_to_check_spam($feedback)
    {
            $d_id=$this->redis_connect(11);
            //echo $feedback;
            //die();
            echo "<b style='color:red'>MESSAGE SENT TO SPAM SWATTER</b>"."<br>";
            $d_id->PUBLISH("MESSAGE_FROM_MARS",$feedback);

    }

有一个服务器端 python 监听器接收发布的数据,代码片段如下:

r = redis.StrictRedis(host='localhost', port=6379, db=11)
def sum(a,b):
print a+b
def main():
  sub = r.pubsub()
  sub.subscribe('MESSAGE_FROM_MARS')

python 代码进行处理并将结果发布回来。片段如下:

r.publish('SPAM_STATUS',spam)

我正在尝试使用 socket.io websocket 获得结果,代码片段如下。:

<script>
var socket = io.connect('127.0.0.1:6379');
console.log(socket);
socket.on('SPAM_STATUS', function (data) {
alert("here");
console.log(data);
//socket.emit('my other event', { my: 'data' });
});
</script>

除了 socket.io 出于某种原因没有从 SPAM_STATUS 通道获取消息之外,一切都像桃子一样工作。

我究竟做错了什么?我对socket.io比较陌生,所以请原谅我的天真

4

1 回答 1

0

据我所知,服务器端需要一个socketIO服务器。

显然,“var socket = io.connect('your redis port')”不起作用。

Redis 仅用于发布/订阅部分,用于您的服务器-> 服务器广播。

对于服务器端和客户端之间的实时交互,您需要一个socketIO服务器和socketIO客户端。

这是我自己觉得非常有用的工作示例:

https://github.com/jonasagstedt/redis-pubsub-chat/tree/master/redischat

于 2013-12-11T01:30:10.213 回答