環境:
Windows10
Node.js(v6.10.3)
タイトルの通りです。
Node.js + WebSocket + node-postgres
を使用しています。
クライアントからメッセージを受信したらPostgresのDB
にserect文を発行し結果を返すプログラムを作成しています。
色々なサイトを参考にさせていただき、
上記処理は動くようになったのですが、2回目のメッセージ受信時、
connectのタイミングで"Client has already connected"のエラーが発生してしまいます。
そこで、質問として
・pgClient.endをコールしたタイミングで接続は切れないのでしょうか?
・接続を切るにはどうすればよいでしょうか?
・都度connectするのではなくサーバアプリ起動時にconnectし、
ずっと繋ぎっぱなしにするのが正しいのでしょうか?(endは呼ばない)
(その場合、アプリ終了時にendをコール?)
大変初的な質問で申し訳ありませんが、宜しくお願い致します。
javascript
1var server = require('ws').Server; 2var s = new server({ port:8080 }); 3 4var pg = require('pg'); 5var pgClinat = new pg.Client({ 6 user: 'postgres', 7 host: 'localhost', 8 database: 'sample', 9 password: 'password', 10 port: '5432', 11}) 12 13s.on('connection',function(ws){ 14 console.log("connect a cliant"); 15 16 ws.on('message',function(message){ 17 console.log("received: "+message); 18 19 pgClinat.connect(function(err){ 20 if(err){ 21 return console.error('connect error : ',err); 22 } 23 pgClinat.query('SELECT * FROM TESTTABLE2',(err,res)=>{ 24 if(err){ 25 return console.error('query error : ',err); 26 } 27 28 var resTxt = JSON.stringify(res.rows[0]); 29 s.clients.forEach(function(client) { 30 client.send(resTxt); 31 }); 32 33 pgClinat.end(function(){ 34 console.log('connection end '); 35 }); 36 }) 37 }); 38 }) 39 40 ws.on('close',function(){ 41 console.log("lost a cliant"); 42 }) 43})
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/25 01:26