質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.25%

  • Swift

    5329questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Node.js

    1294questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Socket.IO

    155questions

    Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

socket.io-client-swiftを使ってnode.jsサーバにアクセスしたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 69

balaem

score 5

swiftでローカルのサーバにアクセスしようとしているのですが、コネクションが確立されていないようで困っています。client.jsからapp.jsへの接続はできているようで、テキストデータは無事に送信されています。

実現したいことは、iphoneアプリのボタンを押して、websocket通信でデータをやり取りすることです。

以下ソースです。

[app.js]

var io = require('socket.io').listen(8080);

io.sockets.on('connection', function(socket) {
  socket.on('don', function(data) {
    console.log(data);
  });
});

[client.js]

var io = require('socket.io-client');
var socket = io('http://localhost:8080');

socket.emit('don', 'doko');

[SubmitViewController.swift]

//  SubmitViewController.swift

import UIKit
import SocketIO

class SubmitViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func submitOffer(_ sender: Any) {
        let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true)])
        let socket = manager.defaultSocket

        socket.on(clientEvent: .connect) {data, ack in
            print("socket connected")
        }

        socket.connect()
    }
}

↓swiftのログ

2017-12-24 17:38:40.486350+0900 mb[3136:72278] [MC] Lazy loading NSBundle MobileCoreServices.framework
2017-12-24 17:38:40.487333+0900 mb[3136:72278] [MC] Loaded MobileCoreServices.framework
2017-12-24 17:38:41.981979+0900 mb[3136:72278] LOG SocketIOClient{/}: Adding handler for event: connect
2017-12-24 17:38:41.982531+0900 mb[3136:72278] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting]
2017-12-24 17:38:41.982776+0900 mb[3136:72278] LOG SocketIOClient{/}: Joining namespace /
2017-12-24 17:38:41.982944+0900 mb[3136:72278] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2017-12-24 17:38:41.983064+0900 mb[3136:72278] LOG SocketManager: Adding engine
2017-12-24 17:38:41.983803+0900 mb[3136:72278] LOG SocketManager: Manager is being released
2017-12-24 17:38:41.983840+0900 mb[3136:72378] LOG SocketEngine: Starting engine. Server: http://localhost:8080
2017-12-24 17:38:41.983991+0900 mb[3136:72378] LOG SocketEngine: Handshaking
2017-12-24 17:38:41.983996+0900 mb[3136:72278] LOG SocketIOClient{/}: Client is being released
2017-12-24 17:38:41.985576+0900 mb[3136:72378] LOG SocketEnginePolling: Doing polling GET http://localhost:8080/socket.io/?transport=polling&b64=1
2017-12-24 17:38:42.024909+0900 mb[3136:72376] LOG SocketEnginePolling: Got polling response
2017-12-24 17:38:42.025101+0900 mb[3136:72376] LOG SocketEnginePolling: Got poll message: 97:0{"sid":"o-pOVt74RsYzCWBgAAAD","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}2:40
2017-12-24 17:38:42.025551+0900 mb[3136:72376] LOG SocketEngine: Got message: 0{"sid":"o-pOVt74RsYzCWBgAAAD","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}
2017-12-24 17:38:42.028485+0900 mb[3136:72376] LOG SocketEngine: Got message: 40
2017-12-24 17:38:42.029058+0900 mb[3136:72376] LOG SocketEngine: Writing poll:  has data: false
2017-12-24 17:38:42.029261+0900 mb[3136:72376] LOG SocketEnginePolling: Sending poll:  as type: 2
2017-12-24 17:38:42.029794+0900 mb[3136:72376] LOG SocketEnginePolling: Created POST string: 1:2
2017-12-24 17:38:42.030282+0900 mb[3136:72376] LOG SocketEnginePolling: POSTing
2017-12-24 17:38:42.030530+0900 mb[3136:72376] LOG SocketEngine: Engine is being released
2017-12-24 17:39:25.880162+0900 mb[3136:72278] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/jupiter/Library/Developer/CoreSimulator/Devices/64B858AC-110D-44E7-B3E5-D985F8C6E409/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2017-12-24 17:39:25.880771+0900 mb[3136:72278] [MC] Reading from private effective user settings.

英語が読めれば、ドキュメントやエラーメッセージで理解できるの思うのですが。

以下ヴァージョンです
node 9.3.0
socket.io 2.4.0
swift 4.3.0
Xcode 9.2(9C40b)

どうぞよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.25%

関連した質問

  • 受付中

    websocket実装方法

    websocketを使ってチャットを作成したいです。 IDEはNetBeansを使用しています。 実装方法を詳しく教えてください。

  • 解決済

    node.jsのmodule.exportsで循環参照

    あるwebアプリを作っててそこではexpressとsocketioを使用しています。 expressのインスタンスの処理等とルーティングを分けようと思って app.js

  • 解決済

    Swift オプショナルの扱いに関して

    質問です。 現在、サンプルアプリとして リアルタイム双方向通信を可能とした チャットアプリをIOS用に開発しております。 サーバーサイドはNode.jsで 開

  • 解決済

    Socket.IOの扱いに関して

    現在、iPhone用に リアルタイム双方向通信を搭載した チャットアプリをサンプルとして制作しております。 とりあえず、今の段階では、クライアントからサーバーにメッセ

  • 解決済

    CoreLocationで位置情報が取得したい

    CoreLocationでiPhoneの位置情報を取得するプログラムを実行したところ、 startUpdatingLocation()が実行されません。 前提・実現したいこ

  • 解決済

    文字列からNSDateに変換する

    いつもお世話になっております。 文字列からNSDate型に変換する方法について質問です。 現在以下のようなコードで文字列から変換しようとしています。 let da

  • 解決済

    Swift 配列をprintする際に要素数で改行してprintするやり方

    配列をprintする際に、ある要素数で改行して表示するやり方がわかりません。 let a = [0,2,3,1,2,3,2,5,26,23,...] という配列を3個刻みで改

  • 解決済

    Himotokiを使った楽天APIのデコードができない

    楽天APIを使って開発してるのですが、 下に示したようなJSONがレスポンスとして返ってくるのですが、Hitmotokiを使ったデコード方法がわかりません。 Itemsの下に配

同じタグがついた質問を見る

  • Swift

    5329questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Node.js

    1294questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Socket.IO

    155questions

    Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。