[REDIS] Node.js를에서 채팅 서버에 대한 레디 스 펍 / 하위
REDISNode.js를에서 채팅 서버에 대한 레디 스 펍 / 하위
나는 레디 스 요리 책의 예를 해결하려고 노력 해요 :
var http = require('http'),
io = require('socket.io')
fs = require('fs'),
redis = require('redis'),
rc = redis.createClient(9189, "pike.redistogo.com");
rc.auth("passwd", function() {
console.log("Connected! to redistogo!");});
rc.on("connect", function() {
rc.subscribe("chat");
console.log("rc connect event");
});
여기를 통해 성공적인 모르지만, 결코 "메시지를."
rc.on("message", function (channel, message) {
console.log("Sending: " + message);
socketio.sockets.emit('message', message);
});
webpage = http.createServer(function(req, res){
console.log('webpage request starting...');
fs.readFile('./index.htm', function(error, content) {
if (error) {
res.writeHead(500);
res.end();
}
else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(content, 'utf-8');
}
});
});
webpage.listen(7777);
내 클라이언트 측 index.htm으로는 이것이다
<!docttype html>
<html lang="en">
<head>
<script src ="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"> </script>
<script src="http://www.heaphash.com:7777/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('www.heaphash.com', { port: 7777});
socket.on('message', function(data){
var li = new Element('li').insert(data);
$('messages').insert({top: li});
}
</script>
<meta charset="utf-8">
<title>Chat with Redis</title>
</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', $('chattext').val());
$('chattext').val(""); //cleanup the field
return false;
});
</script>
</body>
</html>
어떻게 클라이언트가 특정 레디 스 "채팅"채널에 게시 않습니다.
해결법
-
==============================
1.당신의 Node.js를이 프로그램에서 당신은 레디 스 펍 / 하위 기능을 사용하는 경우 하나의 어떤 채널과 채널 (들)에 메시지를 일반 명령을 전송 및 / 또는 게시 두 번째 레디 스 클라이언트 연결에서 수신에 대한 클라이언트 연결을 레디 스 할애해야한다. node_redis 문서에서 :
당신의 Node.js를이 프로그램에서 당신은 레디 스 펍 / 하위 기능을 사용하는 경우 하나의 어떤 채널과 채널 (들)에 메시지를 일반 명령을 전송 및 / 또는 게시 두 번째 레디 스 클라이언트 연결에서 수신에 대한 클라이언트 연결을 레디 스 할애해야한다. node_redis 문서에서 :
귀하의 문제는 이러한 질문에 관련되어 있습니다 :
-
==============================
2.나는 그 책에서 예를 들어 뭔가를 누락되었음을, 나는 또한 그 책을 읽고 궁금 생각합니다. 당신은 레디 스 채널에 등록하고 서버 측에서 메시지를 기다리고 있습니다,하지만 당신은 결코 그 채널에 게시하지 않습니다. 웹 소켓 메시지가있을 때, 당신은 레디 스 채널에 해당 메시지를 게시 할 수 있도록 어떤없는 것은 이벤트 리스너입니다.
나는 그 책에서 예를 들어 뭔가를 누락되었음을, 나는 또한 그 책을 읽고 궁금 생각합니다. 당신은 레디 스 채널에 등록하고 서버 측에서 메시지를 기다리고 있습니다,하지만 당신은 결코 그 채널에 게시하지 않습니다. 웹 소켓 메시지가있을 때, 당신은 레디 스 채널에 해당 메시지를 게시 할 수 있도록 어떤없는 것은 이벤트 리스너입니다.
from https://stackoverflow.com/questions/7463714/redis-pub-sub-for-chat-server-in-node-js by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스는 반복없이 터지는없이 목록의 모든 값을 가져 오기 (0) | 2020.01.12 |
---|---|
[REDIS] 레디 스-평 : StrictRedis ()와 레디 스 ()의 차이점은 무엇입니까? (0) | 2020.01.12 |
[REDIS] 실시간 응용 프로그램 초보자 - Node.js를 + 레디 스 또는 RabbitMQ -> 클라이언트 / 서버 방법? (0) | 2020.01.12 |
[REDIS] 도커 레디 스의 연결이 거부 됨 (0) | 2020.01.12 |
[REDIS] 레디 스, 세션 만료 및 역방향 조회 (0) | 2020.01.12 |