django通过节点服务器和socket.io将消息保存到数据库

我有节点服务器:

var http = require('http'); var server = http.createServer().listen(4000); var io = require('socket.io').listen(server); var cookie_reader = require('cookie'); var querystring = require('querystring'); var redis = require('redis'); var sub = redis.createClient(); //Subscribe to the Redis chat channel sub.subscribe('chat'); //Configure socket.io to store cookie set by Django io.use(function(){ io.set('authorization', function(data, accept){ if(data.headers.cookie){ data.cookie = cookie_reader.parse(data.headers.cookie); return accept(null, true); } return accept('error', false); }); io.set('log level', 1); }); io.sockets.on('connection', function (socket) { //Grab message from Redis and send to client sub.on('message', function(channel, message){ socket.send(message); }); //Client is sending message through socket.io socket.on('send_message', function (message) { values = querystring.stringify({ comment: message, sessionid: socket.handshake.cookie['sessionid'], }); var options = { host: 'localhost', port: 8000, path: '/node_api', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': values.length } }; //Send message to Django server var req = http.request(options, function(res){ res.setEncoding('utf8'); //Print out error message res.on('data', function(message){ if(message != 'Everything worked :)'){ console.log('Message: ' + message); } }); }); req.write(values); req.end(); }); 

});

当我发送消息时,它不保存在数据库中..

这是我对django的看法:

 @csrf_exempt def node_api(request): print "inside node" try: print "inside try" session = Session.objects.get(session_key=request.POST.get("sessionid")) print "first" user_id = session.get_decode().get("_auth_user_id") print user_id user = User.objects.get(id=user_id) Comments.objects.create(user=user, text=request.POST.get("comment")) r = redis.StrictRedis(host="localhost", port=6379, db=0) r.publish("chat", user.username + ": " + request.POST.get("comment")) return HttpResponse("Everything worked :") except Exception, e: return HttpResponseServerError(str(e)) 

这里怎么了?

任何人都可以指导我正确的方向? 当我去'/ node_api /'url它说会话匹配查询不存在..

我对显示消息的看法:

 @login_required def home(request): print "entered" comments = Comments.objects.select_related().all()[0:100] return render(request, "index.html", locals()) 

当我提交消息不保存到数据库既不显示…

提前感谢

如果你使用Python,那么你为什么不尝试python的方式做实时。

用django尝试龙卷风。 它支持socket.io ..

你可以用python编码,没有任何困难。 这并不意味着JavaScript是不好的,但尝试在Python中,看看龙卷风,redis,Django。 你会find你的解决scheme。