1

我是 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);
4

1 回答 1

1

看起来您没有在监听来自 socket.io 的任何连接/消息事件 .. 尝试类似

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

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

于 2012-10-19T22:56:54.857 回答