2012-10-19 148 views
1

我是Node.Js和Redis的新起步者。我得到了Redis食谱,并试用了Chat客户端&服务器配方。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); 
+0

这是一个非常普遍的问题。谨慎发布更多关于您看到的这些工作的具体问题? – marko

回答

1

它看起来像你不听从socket.io任何连接/消息事件..尝试类似于

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

您需要在上面取消您的rc1的注释,您需要第二个redis连接

+0

我看到这篇文章,但没有看到解决方案。有点卡住 –

+0

好吧,看起来你没有在socket.io前面听过任何事件,我编辑了我的答案以反映一个建议 – hexist

+0

非常感谢。 –