Programming/(Python)(Ubuntu)
React, JQuery, Flask 를 이용한 중개 통신
$choice
2021. 3. 12. 14:43
Flask를 이용한 통신 중개 서버를 먼저 만든다.
from flask import Flask, jsonify, request
import json
import ssl
app = Flask(__name__)
cam_msg = 'init'
# headers = {'Content-Type': 'application/json'; charset=utf-8'}
# data = {'flags':'data'}
# requests.post('ip_address', headers = headers, data = json.dumps(data))
######## cam_data ########
@app.route("/camera", methods=['POST'])
def receive_cam():
global cam_msg
c_msg = request.get_json()
cam_msg = c_msg['flags'] #cam on : 0 | cam off : 1
print(type(cam_msg), cam_msg)
return 'received'
@app.route("/get_camera")
def send_cam():
global cam_msg
print(cam_msg)
return str(cam_msg)
######## mic_data ########
@app.route("/mic", methods=['POST'])
def receive_mic():
global mic_msg
m_msg = request.get_json()
mic_msg = m_msg['flags'] #mic on : 0 | cam off : 1
print(type(mic_msg), mic_msg)
return 'received'
@app.route("/get_mic")
def send_mic():
global mic_msg
print(mic_msg)
return str(mic_msg)
if __name__ == '__main__':
# https 통신
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
ssl_context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')
app.debug = False
app.run(host="0.0.0.0", port = 0000, threaded = True, ssl_context=ssl_context)
### Unicode Error
# json.loads()
React 내의 통신
## POST
sendcamera = () => {
Axios({method:"POST",
url: 'http://personal_server:8888/camera', ## Flask 주소
data:{'flags': a}
}).then((res)=> {
console.log(res);
}).catch(error=>{
console.log(error);
});
}
## GET
get_camera_using = () => {
Axios({method:"GET",
url: 'http://personal_server:8888/get_camera', ## Flask 주소
}).then((res)=> {
now_using_camera = res.data
// check_camera_using = res
// console.log(check_camera_using)
// console.log(res.data);
}).catch(error=>{
console.log(error);
});
$.ajax({
url: "http://personal_address:port",
method: "GET",
dataType: "json",
timeout: 6666,
success: function(data) {
intention_num = data
console.log("intention_num", intention_num)
}
})
$.ajax({
url: "https://personal_address:port",
method: "POST",
dataType: "json",
contentType: "application/json",
timeout: 6666,
data: jsonData,
success: function (data) {
console.log("성공")
}
})
이렇게하면 React 페이지 안에서 사용되는 변수 a를 Flask 서버에 전송할 수 있다.
전송되어진 함수는 Flask서버에 전송되어져 변수로 저장된다.
axios 통신
this.get_state = function() {
const url = "http://personal_server:8888/mic"; ## Flask 주소
axios.get(url)
.then(function(response) {
data = response
// console.log(response)
// console.log("성공");
})
.catch(function(error) {
// console.log("실패");
})
a = data.data
// console.log(a)
}
this.get_mic = function(){
const url = "http://personal_server:8888/get_mic"; ## Flask 주소
axios.post(url, {flags : now_mic_using_check})
.then(function(response) {
// console.log(response)
// console.log("성공");
})
.catch(function(error) {
// console.log("실패");
})
}
var coming_req = axios.post('https://Personal_address:port/lamp_power',
{power:true})
.then(res => {
console.log('Post Error!');
})
.catch(error => {
console.log('Post Success!');
})
let req3 = axios.get('https://Personal_address:port/get_chat_mode')
.then(res => {
console.log('statusCode: ${res.statusCode}')
console.log(res['data'])
UI_chat_mode.mode = res['data']
})
.catch(error => {
console.error(error)
})
반응형