์ด๋ฒ ๊ตฌํ ํ
์คํธ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋๊ธ์๋ฆผ ๊ธฐ๋ฅ์ด์๋ค.
์์ ์ ๊ธ์ ๋๊ธ์ด ๋ฌ๋ฆด ๋ alert
์ฐฝ์ผ๋ก ์๋ฆผ์ ์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค.
์ด๋ ๊ฒ ์ค์๊ฐ์ผ๋ก ๋๊ธ์ ๋ํ ์๋ฆผ์ ์ฃผ๋ ค๋ฉด ๋ณดํต์ HTTP ์์ฒญ์ผ๋ก๋ ์ฝ์ง ์๋ค.
HTTP์์ฒญ์ ๋ฐ๋์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ด์ผ ์๋ฒ์์ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋ต์ ๋ด๋ ค์ค ์ ์๋ค. ์ด๋ฐ ํต์ ์ ๋จ๋ฐฉํฅ ํต์ ์ด๋ผ ํ๋ค.
๋ง์ฝ HTTP๋ก ์ค์๊ฐ ๋๊ธ์๋ฆผ์ ๊ตฌํํด์ผ ํ๋ค๋ฉด ๊ต์ฅํ ์งง์ ์ฃผ๊ธฐ๋ก ๊ณ์ํด์ ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ์ํ๋ฅผ ์๋ฒ๋ก ์์ฒญํด์ผ ํ ๊ฒ์ด๋ค.
์ด๋ฐ ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํด ์์ผํต์ ์ ์ ๊ณตํ๋ค.
์์ผํต์ ์ ํต์ฌ์ ์๋ฐฉํฅ ํต์ ์ด๋ค. ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ด๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ณด๋ผ ์ ์๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ์ ๋งบ๊ณ ํน์ ์ด๋ฒคํธ๊ฐ ์์ ๋ ์ด ์ฐ๊ฒฐ์ ์ด์ฉํด์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ด๋ ค์ค ์ ์๋ค.
์ฌ๊ธฐ์ ํน์ ์ด๋ฒคํธ๊ฐ ๋๊ธ๋ฌ๊ธฐ๊ฐ ๋๋ ๊ฒ์ด๋ค.
Flask๋ ์์ผํต์ ์ ์ํ ๋ชจ๋์ ์ ๊ณตํ๋ค.
pip install flask_socketio
๋ค์์ ์ด Application์์ ์์ผํต์ ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ค์ ์ด๋ค.
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
socketio = SocketIO(app)
if __name__ == '__main__':
# app.run('0.0.0.0', port=5000, debug=True)
socketio.run(app, debug=True)
๋ค์์ผ๋ก ์๋ฒ์ธก์์ ๋๊ธ์ด ๋ฌ๋ ธ์ ๋ ํด๋น ๊ธ์ ์์ฑํ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ณด๋ด์ผ ํ๋ค.
@app.route('/comment', methods=['POST'])
def add_comment():
comment = request.form['comment']
memo_id = int(request.form['memo_id'])
doc = {
'comment': comment,
'memo_id': memo_id
}
db.comments.insert_one(doc)
find_memo = db.memos.find_one({'memo_id': memo_id}, {'_id': False})
socketio.emit(find_memo['writer_id'], "ok")
return jsonify({"result": "success", "msg": "๋๊ธ๋ฌ๊ธฐ ์๋ฃ"})
์ค์ํ ๊ฑด socketio.emit()
์ด ๋ถ๋ถ์ด๋ค.
์์ผ์ ํตํด memo ์์ฑ์์ id๋ฅผ ํค ๊ฐ์ผ๋ก ์๋ต์ ๋ณด๋ด๊ณ ์๋ค.
๋ค์์ ํด๋ผ์ด์ธํธ ์ธก ์ฒ๋ฆฌ์ด๋ค.
๊ตฌํํด์ผ ํ ์ฌํญ์ ํฌ๊ฒ 2๊ฐ ์ด๋ค.
๋จ์ํ๊ฒ ์๊ฐํ๋ฉด ์๋ฒ์์ emit๋ก ๋ณด๋ธ ๊ฐ์ ํด๋ผ์ด์ธํธ์์ on์ผ๋ก ๋ฐ๋๋ค ๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
function connectSocket(id) {
console.log('connect socket: ', id)
var socket = io.connect('http://localhost:5000');
socket.on(id, function () {
alert("์์ฑํ์ ๊ธ์ ๋๊ธ์ด ๋ฌ๋ ธ์ด์!!");
})
}
์์ผ์ ๋ํ ์ ํํ ์ดํด๊ฐ ๋ ํ์ํ ๊ฒ ๊ฐ๋ค.