2012-02-15 7 views
8

La nuova libreria websocket di iOS, SocketRocket, è davvero eccezionale e il progetto di esempio della chat è davvero carino. Il server di chat di esempio è scritto in Python, di cui non conosco nessuno. Ho una certa familiarità con socket.io su node.js e preferisco provare javascript. Ho provato a collegare l'app del simulatore SocketRocket TestChat al file node.js (6.10) socket.io (0.8.7) ma la connessione è stata rifiutata. (Inoltre, anch'io non sono un esperto di nodi, quindi questa potrebbe essere una domanda sciocca).Come usare SocketRocket con socket.io?

In una risposta recente a un SO question, mikelikespie ha detto di op: "Suggerisco di aggiornare lo stack per utilizzare la libreria WebSocket di iOS appena rilasciata."

Che cosa significa esattamente? Cosa è necessario per ottenere la libreria SocketRocket per comunicare con un nodo socket.io server? Qualsiasi codice di esempio o suggerimenti sono molto apprezzati.

risposta

8

Bene you socket.io ha il proprio protocollo costruito su protocolli di trasporto come websocket o polling lungo, ben SocketRocket è solo una libreria websocket, non di più. Socket.io ha anche qualche autenticazione, quindi non è possibile usarlo, con normali socket web. Quello che ti suggerisco di usare è un server websocket, non più di quello. Ad esempio ws, che dovrebbe essere compatibile. Ci sono altre librerie, ma, ws credo sia attivamente sviluppata al momento, e più nuova di altre.

È anche possibile rendere compatibile con socket.io, ma credo che non lo sia. Ecco le specifiche per questo: https://github.com/LearnBoost/socket.io-spec

Spero di aver aiutato.

+0

La libreria ws sembra la strada da percorrere. Non ero in grado di ottenere un'implementazione funzionante con ws, ma questa è una limitazione delle mie capacità di javascript. Segnalo come risposta perché ha senso e non ci sono altre risposte. Grazie. – seeker12

3

socket.IO-objc su GitHub sembra essere un maturo Socket.IO/Objective C Library

Esso utilizza SocketRocket per gestire le connessioni websocket.

Ciò consentirà di disporre di un server socket che supporta i browser meno recenti (degrada a polling lungo ecc.) Ed è ancora accessibile alla tua app iOS tramite SocketRocket.

+2

Il collegamento è a una libreria per le versioni precedenti di Socket.IO. Per un progetto che funziona con socket.io v 0.9+ e 1.0, prova questo: [socket.IO-objc] (https://github.com/francoisp/socket.IO-objc) – Suz

2

Ho appena implementato una connessione socket attiva tra un server Node.JS e un'applicazione iOS, utilizzando this library. Ho usato questo perché il README su Socket.IO-ObjC dice

La versione corrente di questa libreria non supporta ancora socket.io v1.0. Quindi, se si desidera utilizzare socket.io-objc, si prega di tornare a v0.9.x.

ma voglio sempre utilizzare l'ultima versione per tutto. Quindi, se si desidera utilizzare Socket.IO v1.0, è possibile utilizzare quello sul collegamento fornito poche righe sopra.