Redis食谱聊天食谱

时间:2012-10-19 22:33:26

标签: node.js redis chat publish-subscribe cookbook

我是Node.Js和Redis的新手。我拿到了Redis的食谱,正在尝试聊天客户端&服务器配方。

我想知道是否有人让代码工作或者代码中是否有错误。

我不知道在服务器上调用来自客户端的已发送消息的位置。

任何帮助都会很棒。

此致 汤姆

客户代码:

<?php

?> 

<html>
<head>
<title></title>


<script src="http://192.168.0.118:8000/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

<script>


var socket = io.connect('192.168.0.118',{port:8000});

socket.on('message', function(data){
alert(data);
//var li = new Element('li').insert(data);
//$('messages').insert({top: li});
});


</script>

</head>

<body>

<ul id="messages">
<!-- chat messages go here -->
</ul>

<form id="chatform" action="">
<input id="chattext" type="text" value="" />
<input type="submit" value="Send" />
</form>
<script>

$('#chatform').submit(function() {
socket.emit('message', 'test'); //$('chattext').val());
$('chattext').val(""); // cleanup the field
return false;
});

</script>


</body>
</html>

服务器代码:

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

redis = require('redis');
rc = redis.createClient();
//rc1 = redis.createClient();

rc.on("connect",function(){
rc.subscribe("chat");
console.log("In Chat Stream");
});

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

 console.log("Sending hope: " + message);
 //rc1.publish("chat","hope");
 socketio.sockets.emit('message',message);
});

server = http.createServer(function(req,res){

res.writeHead(200,{'content-type':'text/html'});
res.end('<h1>hello world</h1>');

});

server.listen(8000);

var socketio = io.listen(server);

1 个答案:

答案 0 :(得分:1)

看起来你没有在socket.io中监听任何连接/消息事件。尝试像

这样的事情
socketio.sockets.on('connection', function(socket) {
   console.log("Got connection");
   socket.on('message', function(msg) {
       rc1.publish("chat", msg);
   });
});

您需要取消注释rc1,您需要第二次redis连接