소켓 통신 사용 방법
1. Socket.IO 라이브러리 설치
- CocoaPods를 이용하여 Socket.IO 라이브러리 추가
2. Xcode의 프로젝트 파일에서 소켓 통신을 관리하는 클래스를 구현할 새로운 Swift 파일 생성
Ex) 'SocketIOManager.swift' 파일 생성
3. 기본적인 SocketIOManager 전체 코드
4. 세부 코드 설명
1) SocketIOManger 초기화
- SocketIOManager 클래스를 Singleton으로 구현하여 'shared' 프로퍼티를 통해 인스턴스를 가져올 수 있음
- SocketIOManager 클래스는 'ScoketManager' 와 'SocketIOClient' 인스턴스를 프로퍼티로 가지고 있음
- 'manager' : 'SocketManager' 를 초기화하여 소켓 연결을 관리
- 'socket' : 'manager.defaultSocket을 통해 기본 소켓을 가져옴
- 'socketURL' : 소켓 서버의 URL을 지정함. 'URL(string:)' 생성자를 사용하여 문자열을 URL로 변경
- 'config' : 소켓 관련 설정을 구성하는 옵션으로 [.log(true), .compress]와 같이 배열로 전달됨
- '.log(true)' : 디버그 로그를 출력하기 위한 설정
- '.compress' : 데이터 압축을 사용하는 설정. 데이터 전송량을 줄이고 속도를 향상 시키기 위해 사용
2) 채팅 메시지 전송
- 'msg' 이벤트에 닉네임과 메시지를 담아 서버로 전송함
- socket.emit 메서드의 두 번째 파라미터로 completion 은 클로저로 사용
- completion 파라미터는 'msg' 이벤트에 대한 전송 작업이 완료되었을 때 호출되는 클로저
3) 소켓 이벤트 설정
- init 메서드에서 호출한 setupSocektEvents() 함수로 소켓 이벤트를 설정하는 함수
- socket.on은 client 이벤트가 발생했을 때 처리하는 로직을 구현
- 소켓이 연결('connect')되면 console에 "Socket connected" 출력
-> establishConnection() 함수가 호출되면 socket이 연결되면서 실행됨
- 소켓이 연결이 해제('disconnect')되면 console에 "Socket disconnected" 출력
-> closeConnection() 함수가 호출되면 socket이 연결 종료되면서 실행됨
- "test" 라는 이벤트를 수신할 떄 호출되는 이벤트 핸들러로 소켓으로부터 전달받은 data를 [String:Any] 타입으로 다운 캐스팅한 dataArray를 화면에 출력
'Swift - 라이브러리' 카테고리의 다른 글
Swift - Then 라이브러리 (0) | 2023.08.14 |
---|---|
Swift - IQKeyboardManagerSwift 라이브러리 (0) | 2023.08.14 |
Swift - 사진(앨범) 가져오기 (YPImagePicker 라이브러리) (0) | 2023.07.29 |
Swift - Alamofire 라이브러리 (0) | 2023.07.01 |
CocoaPods 설치 (0) | 2023.06.20 |