2
現在、私はDjangoプロジェクトのリアルタイム通知を実装しています。DjangoとSocket.ioのリアルタイム通知
私はthis tutorialの指示に従っています。問題は、私はSocket.io 1.4.5を使用しており、チュートリアルは1.0より前のバージョン用に書かれています。だから、私は'Migrating from 0.9'のガイドラインに従ってSocket.ioサイトにいくつかのコードを適応させなければならなかった。どのような私が得たことは次のとおりです。
var http = require('http');
var server = http.createServer().listen(8002);
var io = require('socket.io')(server);
var cookie_reader = require('cookie');
var querystring = require('querystring');
var redis = require('redis');
// Supposedly this should store cookie set by Django
io.use(function(socket,accept){
var data = socket.request;
if(data.headers.cookie){
data.cookie = cookie_reader.parse(data.headers.cookie);
return accept(null, true);
}
return accept('error', false);
});
io.sockets.on('connection', function (socket) {
// Redis client
client = redis.createClient();
// Subscribe to notification channel
client.subscribe('notifications.' + socket.handshake.cookie['sessionid']);
console.log('subscribed');
//Grab message from Redis and send to client
client.on('message', function(channel, message){
console.log('on message', message);
socket.send(message);
});
// Unsubscribe
socket.on('disconnect', function() {
client.unsubscribe('notifications.' + socket.handshake.cookie['sessionid']);
});
});
私はこのスクリプト実行しているとき:沈黙の2秒後
node notifications.js
を私はこのエラーを取得:
client.subscribe('notifications.' + socket.handshake.cookie['sessionid']);
^
TypeError: Cannot read property 'sessionid' of undefined
at Namespace.<anonymous> (path/to/notifications.js)
at Namespace.emit (events.js:107:17)
at Namespace.emit (/path/to/node_modules/socket.io/lib/namespace.js:206:10)
at /path/to/node_modules/socket.io/lib/namespace.js:174:14
at process._tickCallback (node.js:355:11)
誰かが何に私を指すことができます私は間違いをした?
このサードパーティのサービスを考えましたか? – Ryan
ライアン、まだ。私はwebdevには新しく、ちょうど私が見た最初の解決策に固執しました。現在のところ私のアプリはウェブサイトのみです - サードパーティのサービスを使用する際のポイントはありますか? – Greesha0
それどころか、私はサードパーティのサービスを使用して、あなたのアーキテクチャの開発と保守の面倒の多くを外注していることがわかりました。例:PubNubを見てください。あなたのリアルタイムメッセージングをすべて処理する簡単なAPIがあります。正確に法案に適合しないかもしれませんが、そこには多くの人がいます。ソケットは、特にDjangoを使い始めた先進的なものです。これは、同期HTTPを中心に構築されているフレームワークです – Ryan