2011-02-09 4 views
9

거대한 멀티 플레이어 보드 게임을 개발 중입니다. 내 솔루션은 서버의 node.js socket.io입니다. 구현을위한 솔루션이 필요합니다. 일종의 objective-c 소켓으로 socket.io와 통신하여 json 객체를 문자열로 수신합니다. websocket과 함께 webkit을 사용하지 않을 것입니다. 어떤 가능성이 있습니까? 서버는 게임 상태를 유지할 것이며, 아이폰 클라이언트는 서버에 액션을 보내고 서버의 변경 사항을 수신 할 것입니다.iPhone Socket.IO와의 Objective-C 소켓 통신

+0

이 질문은 주제와 관련이 없습니다. [도서관 또는 기타 오프 사이트 리소스에 대한 권장 사항 만 묻는 질문은 Stack Overflow에 대한 주제와 관련이 없습니다 (// meta.stackoverflow.com/q/251134/2747593). OP,이 문제가 계속 발생하면 코드 작성을 시작하고 더 구체적인 문제가있을 때 다시 돌아 오십시오. 우리가 [시도한 것] (http://whathaveyoutried.com)을 보여주고 [최소한의 완전하고 검증 가능한 예제] (// stackoverflow.com/help/mcve)를 포함시켜야합니다. –

답변

5

아니면 봐 cocoaasyncsocket에서 :

CocoaAsyncSocket는 TCP 및 UDP를 지원합니다. AsyncSocket 클래스는 TCP 용이며 이고 AsyncUdpSocket 클래스는 UDP 용입니다. 각 클래스는 아래에 설명되어 있습니다.

AsyncSocket은 CFSocket 및 CFStream을 래핑하는 TCP/IP 소켓입니다. 비동기식 오퍼레이션을 제공하며 기본 코코아 클래스 은 대리인 지원을 제공합니다. 여기 의 주요 기능은 다음과 같습니다

  • 대기중인 비 차단은 선택 제한 시간과 함께, 읽기 및 쓰기. 당신은 무엇을 읽고 쓸 것인지 말하고, 완료되면 당신에게 전화 할 것입니다.

  • 자동 소켓 허용. 연결을 수락하도록 지시하면 각 연결마다 새로운 인스턴스로 호출됩니다. 물론 연결을 즉시 끊을 수 있습니다.

  • 대리인 지원. 오류, 연결, 수락, 읽기 완료, 쓰기 완료, 진행 및 연결 끊기는 모두 대리인 메서드를 호출합니다.

  • 스레드 기반이 아닌 실행 루프 기반. 메인 또는 작업자 스레드에서 사용할 수 있지만 그렇게 할 필요는 없습니다. NSRunLoop을 사용하여 비동기 적으로 대리자 메서드를 호출합니다. 대리자 메서드에는 소켓 매개 변수가 포함되어 있으므로 여러 인스턴스를 구별 할 수 있습니다.

  • 자체 분류가 하나의 클래스에 포함됩니다. 스트림이나 소켓으로 주변을 둘러 볼 필요가 없습니다. 클래스는 모두 을 처리합니다.

  • IPv4 및 IPv6을 통한 TCP 스트림을 지원합니다.

도서관은 원래 더스틴 Voss이 작성한 공개, 입니다. 현재 을 공개 설정으로 사용하여 을 허용하고 계속 지원하도록 권장합니다.

AsyncUdpSocket은 CFSocket을 래핑하는 UDP/IP 소켓 네트워킹 라이브러리입니다. TCP 버전 인 과 거의 동일하게 작동하지만 UDP 용으로는 으로 지정되었습니다.여기에는 대기열 논 블로킹 보내기/수신 작업, 전체 대리인 지원, 실행 루프 기반 자체 포함 클래스, 및 IPv4 및 IPv6 지원이 포함됩니다.

+0

이 라이브러리는 Socket.IO와 함께 사용할 수 있습니까? – greenimpala

11

편집 2015년 3월 19일 : Socket.IO의 사람은 Socket.IO 버전 1.0 +를 지원하는 자신의 아이폰 OS 라이브러리를 만들었습니다. 여기 받기 : https://github.com/socketio/socket.io-client-swift


된 대답

I 버전 0.7.2와 함께 작동하도록 업데이트 fpotter의 socket.io 라이브러리 - 0.9.x.
소켓과 XHRpolling을 지원합니다.

https://github.com/pkyeck/socket.IO-objc

아마 당신은 그것을 확인하시기 바랍니다.

+0

안녕하세요. 라이브러리를 사용하고 있으며 iOS7 앱과 완벽하게 작동합니다. 이제는 한 번 연결하여 너무 많은 연결/연결 끊김을 피하기 위해 NSObject가 각 viewController의 이벤트를 관리하려고합니다. 그것에 대한 튜토리얼이 있습니까? – Maziyar

+0

죄송합니다. 그러나 여기에는 튜토리얼이 없습니다. – pkyeck

+0

Xcode 7과 iOS 9에 [link] (https://github.com/pkyeck/socket.IO-objc) 라이브러리를 추가하고 있습니다.하지만 연결 후 단지'error code 400'의 응답을 주려고합니다. 그러나 내가 신속하게 그것을하고 있다면 그것은 올바르게 연결됩니다. 이 객관적인 c의 라이브러리가 쓸모 없습니까? @peckeck –