본문 바로가기
WebSocket

웹 소켓 (코드 분석 2 : python 편)

by @ENFJ 2022. 11. 13.

전체 코드

from datetime import datetime
from websocket import create_connection
import json


ws = create_connection("ws://본인 IP:8001") <--ex) 192.111.111.111:8001
#print(ws.recv())
#print("Sending 'Hello, World'...")
# ws.send("Hello, World")
# print("Sent")
# print("Receiving...")
result =  ws.recv()
print("Received '%s'" % result)
# d = {"name":"홍길동", "birth":"0525", "age": 30}
# json_data = json.dumps(d)
# ws.send(json_data)

# import websocket
# import _thread
# import time
# import rel

# def on_message(ws, message):
#     print(message)

# def on_error(ws, error):
#     print(error)

# def on_close(ws, close_status_code, close_msg):
#     print("### closed ###")

# def on_open(ws):
#     print("Opened connection")

# if __name__ == "__main__":
#     websocket.enableTrace(True)
#     ws = websocket.WebSocketApp("ws://192.168.110.104:8001",
#                               on_open=on_open,
#                               on_message=on_message,
#                               on_error=on_error,
#                               on_close=on_close)

#     ws.run_forever(dispatcher=rel, reconnect=5)  # Set dispatcher to automatic reconnection, 5 second reconnect delay if connection closed unexpectedly
#     rel.signal(2, rel.abort)  # Keyboard Interrupt
#     rel.dispatch()
 # check to see if the object has been counted or not
                        if (not trackable.counted) and (len_directions > min_directions):
                                if direction == 1 and centroid[1] < count_limit:
                                        up_count += 1
                                        trackable.counted = True
                                        cursor.execute("UPDATE dbo.TB_PASSENGER_CP set UP_CP = " + str(up_count) + " where PASSENGER_ID_CP = "+str(row3[0]))
                                        conn.commit()
                                        cursor.execute("INSERT INTO dbo.TB_PASSENGER_LOG_CP (LOG_PASSTIME_CP, LOG_PASS_CONTENT_CP, LOG_PASS_COUNT_CP) values('"+datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]+"', 'UP', "+str(up_count)+")")
                                        conn.commit()
                                        d = [{"req":"up", "upCnt":str(up_count)}]
                                        json_data = json.dumps(d)
                                        ws.send(json_data)
                                       
                                elif direction == 0 and centroid[1] > count_limit:
                                        down_count += 1
                                        trackable.counted = True
                                        cursor.execute("UPDATE dbo.TB_PASSENGER_CP set DOWN_CP = " + str(down_count) + " where PASSENGER_ID_CP = "+str(row3[0]))
                                        conn.commit()
                                        cursor.execute("INSERT INTO dbo.TB_PASSENGER_LOG_CP (LOG_PASSTIME_CP, LOG_PASS_CONTENT_CP, LOG_PASS_COUNT_CP) values('"+datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]+"', 'DOWN', "+str(down_count)+")")
                                        conn.commit()
                                        d = [{"req":"down", "downCnt":str(down_count)}]
                                        json_data = json.dumps(d)
                                        ws.send(json_data)
ws.close()

 


 

한 줄 해석

 

import json

👉파이썬 자료형을 json 문자열로 인코딩 하기 위해서는 먼저 json 모듈을 import로 가져와야합니다.

 

result =  ws.recv()

👉웹소켓을 통해 받은 값을 result 변수에 넣어둠.

print("Received '%s'" % result)

👉%s 로 문자열을 출력합니다.

 

d = [{"req":"up", "upCnt":str(up_count)}]
json_data = json.dumps(d)
ws.send(json_data)

👉json문자열을 만들기 위해서는 json 모듈의 dumps 함수를 이용하면 된다.

 

예시로 아래 사진은 딕셔너리를 만들어서 dumps 함수를 이용해 json 문자열을 만들어 준것이다.

https://pybo.kr/pybo/question/detail/40/?page=1

그렇다면 dumps(d)함수로   {req: "up", "upCnt": up_count 의 문자열 형식 값}  <-- 이 나올것이고 이 json형식의 값을 

 

json_data 변수에 담아둔다.그리고 웹소켓 send 함수로 전송합니다.

 

 

 

참고:

https://pybo.kr/pybo/question/detail/40/?page=1 (파이썬 json)

'WebSocket' 카테고리의 다른 글

웹 소켓(WebSocket) 코드분석(server.js 편)  (1) 2022.11.14
웹 소켓 (코드 분석)  (1) 2022.11.13
[파이썬] 웹 소켓 사용하기!😊  (0) 2022.11.12
웹 소켓 (Web Socket)🤝🤝  (1) 2022.11.12