私は今node.jsとredisのプライベートチャネル。の仕方?
var app = require('express').createServer()
, io = require('socket.io').listen(app);
var redis = require("redis");
app.listen(8080);
////////////// Dev environment; replace by PERL in production use.
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
//////////////
io.sockets.on('connection', function (socket) {
socket.subscribe = redis.createClient();
socket.subscribe.subscribe('chat');
socket.subscribe.on("message", function(channel, message) {
socket.send(message);
});
socket.on('disconnect', function() {
socket.subscribe.quit();
});
socket.on('close', function() {
socket.subscribe.quit();
});
});
Redisのチャンネルを購読する簡単なスクリプト(app.jsを)書いて、私は、ユーザーごとにプライベートチャンネルにサブスクライブすることにしたいです。
私はこのようなsocket.io.connectを経由して、余分なデータを渡そうとしました:app.js
...
io.sockets.on('connection', function (socket, args) {
socket.subscribe = redis.createClient();
socket.subscribe.subscribe(args.PRIVATE_ROOM_HASH);
socket.subscribe.on("message", function(channel, message) {
socket.send(message);
});
で
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8080', {'PRIVATE_ROOM_HASH': 'secret_hash'});
socket.on('message', function (data) {
console.log(data);
});
</script>
、その後、それが動作しません。
個室の問題を解決する方法はありますか?
ありがとうございました。
ありがとうDeaDEnD!私はこれが良い解決策だと思う。とにかく、私はredis.createClient()と一緒にいますので、私はアプリケーションの他の部分(例えばPerlのコード)でRedisを使っているのでsocket.joinとsocket.broadcastを使用しません – User
サンプルコードがありますかこのために、私はredisとソケットでlaravelアプリケーションを構築し、私はこれらのプライベートチャネルを作成に固執した – utdev