こんにちは、基本的に動的に編集されたjsonファイルを読み取り、そのコンテンツをクライアントにプッシュする単純なnodejsプッシュ通知サーバーを作成しています。
更新: like data = JSON.parse(data); を削除すると機能します。誰でも明確にできますか?
5秒ごとにpythonを使用してjsonファイルを編集しています。しかし、Python ループを実行してファイルを編集するたびに、ノード サーバーがクラッシュします。ただし、同じコードを while ループ内で個別に実行すると、Node Server は問題なく動作します。
ノードサーバーで次のエラーが発生しています
debug - cleared heartbeat timeout for client c_u5Oi1eGnwaDerGREMD
debug - set heartbeat interval for client c_u5Oi1eGnwaDerGREMD
{"sample": {"name": "Shubhanshu Mishra100", "networks": ["facebook", "twitter",
"linkedin"]}}
debug - websocket writing 5:::{"name":"notification","args":[{"sample":{"name
":"Shubhanshu Mishra100","networks":["facebook","twitter","linkedin"]},"time":"2
012-10-09T11:24:55.588Z"}]}
{"sample": {"name": "Shubhanshu Mishra100", "networks": ["facebook", "twitter",
"linkedin"]}}
debug - websocket writing 5:::{"name":"notification","args":[{"sample":{"name
":"Shubhanshu Mishra100","networks":["facebook","twitter","linkedin"]},"time":"2
012-10-09T11:24:55.589Z"}]}
{"sample": {"name": "Shubhanshu Mishra200", "networks": ["facebook", "twitter",
"linkedin"]}}
debug - websocket writing 5:::{"name":"notification","args":[{"sample":{"name
":"Shubhanshu Mishra200","networks":["facebook","twitter","linkedin"]},"time":"2
012-10-09T11:25:00.598Z"}]}
{"sample": {"name": "Shubhanshu Mishra200", "networks": ["facebook", "twitter",
"linkedin"]}}
debug - websocket writing 5:::{"name":"notification","args":[{"sample":{"name
":"Shubhanshu Mishra200","networks":["facebook","twitter","linkedin"]},"time":"2
012-10-09T11:25:00.619Z"}]}
undefined:0
^
SyntaxError: Unexpected end of input
at Object.parse (native)
at F:\My Codes\NodeJs\PushNotification\server.js:25:16
at fs.readFile (fs.js:176:14)
at Object.oncomplete (fs.js:297:15)
Node.jsで次のコードを使用してresponse.jsonファイルを読んでいます
io.sockets.on('connection', function(socket){
fs.watch('response.json', function(curr, prev){
fs.readFile('response.json', 'utf8', function(err, data){
if(err) throw err;
console.log(data);
data = JSON.parse(data);
data.time = new Date();
socket.volatile.emit('notification', data);
});
});
});
更新: like data = JSON.parse(data); を削除すると機能します。誰でも明確にできますか?
私のpythonスクリプトを個別に呼び出すときに機能する私のpythonコードは次のとおりです。
import json
import time
jsonStr = {
"sample": {
"name": "Shubhanshu Mishra",
"networks": [
"facebook",
"twitter",
"linkedin"
]
}
}
i = 0
jsonStr['sample']['name'] = "Shubhanshu Mishra" + str(i);
fStr = json.dumps(jsonStr)
with open('response.json', 'w') as f:
f.write(fStr)
f.closed
ただし、上記の同じコードを 5 秒のスリープで while ループでラップすると、上記のエラーが発生します。while ループの私のコードは次のとおりです。
while True:
i += 100
print i
jsonStr['sample']['name'] = "Shubhanshu Mishra" + str(i);
fStr = json.dumps(jsonStr)
#f = open("response.json", "w")
with open('response.json', 'w') as f:
f.write(fStr)
f.closed
#f.write(fStr)
print "Written to file: " + fStr
#f.close()
time.sleep(5)
私の完全なコードは、 https ://github.com/napsternxg/PushNotification で見ることができます。