Coder Social home page Coder Social logo

Comments (8)

maltheism avatar maltheism commented on June 24, 2024 11

#8
Solution is to add this to SocketIoReadableNativeMap.java:

protected SocketIoReadableNativeMap(HybridData hybridData) {
    super(hybridData);
}

SocketIoReadableNativeMap.java then looks like this:

package com.gcrabtree.rctsocketio;

import android.util.Log;

import com.facebook.jni.HybridData;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.facebook.react.bridge.ReadableNativeMap;

import java.util.HashMap;

import io.socket.client.IO;

/**
 * Created by Greg Crabtree on 5/17/16.
 */

public class SocketIoReadableNativeMap extends ReadableNativeMap {
    private static final String TAG = "SIOReadableNativeMap";

    protected SocketIoReadableNativeMap(HybridData hybridData) {
        super(hybridData);
    }

    /**
     * Note: This will only be necessary until RN version 0.26 goes live
     * It will be deprecated from the project, as this is just included in that version of RN.
     *
     * This converts the SocketIoReadableNativeMap to a Java usable HashMap.
     * @return converted HashMap.
     */
    public static HashMap<String, Object> toHashMap(ReadableNativeMap map) {
        ReadableMapKeySetIterator iterator = map.keySetIterator();
        HashMap<String, Object> hashMap = new HashMap<>();

        while (iterator.hasNextKey()) {
            String key = iterator.nextKey();
            switch (map.getType(key)) {
                case Null:
                    hashMap.put(key, null);
                    break;
                case Boolean:
                    hashMap.put(key, map.getBoolean(key));
                    break;
                case Number:
                    hashMap.put(key, map.getDouble(key));
                    break;
                case String:
                    hashMap.put(key, map.getString(key));
                    break;
                case Map:
                    hashMap.put(key, toHashMap(map.getMap(key)));
                    break;
                case Array:
                    hashMap.put(key, ((SocketIoReadableNativeArray) map.getArray(key)).toArrayList());
                    break;
                default:
                    throw new IllegalArgumentException("Could not convert object with key: " + key + ".");
            }
        }
        return hashMap;
    }

    /**
     * This converts a SocketIoReadableNativeMap to a SocketIO Option object.
     * @param options ReadableNativeMap that is a JS bridged hash of options.
     * @return IO.Options object that has been populated. Currently incomplete. Pas welcome.
     */
    public static IO.Options mapToOptions(ReadableNativeMap options) {
        ReadableMapKeySetIterator iterator = options.keySetIterator();
        IO.Options opts = new IO.Options();

        while (iterator.hasNextKey()) {
            String key = iterator.nextKey().toLowerCase();
            switch (key) {
                case "force new connection":
                case "force new"
                    opts.forceNew = options.getBoolean(key);
                    break;
                case "multiplex":
                    opts.multiplex = options.getBoolean(key);
                    break;
                case "reconnection":
                    opts.reconnection = options.getBoolean(key);
                    break;
                case "connect_timeout":
                    opts.timeout = options.getInt(key);
                    break;
                default:
                    Log.e(TAG, "Could not convert object with key: " + key + ".");
            }
        }
        return opts;
    }
}

Note:
You can't use localhost when creating a new SocketIO for Android Emulator.
Use whatever your local IP is when creating a socket in index.android.js
Example:
this.socket = new SocketIO('http://192.168.0.1:3000', {});

from react-native-socketio.

mcliquid avatar mcliquid commented on June 24, 2024 5

+1

from react-native-socketio.

littlepsylo avatar littlepsylo commented on June 24, 2024

Same here and with react-native 0.30.0

from react-native-socketio.

scizers avatar scizers commented on June 24, 2024

Same here

from react-native-socketio.

daywong1119 avatar daywong1119 commented on June 24, 2024

same here

from react-native-socketio.

ankuj avatar ankuj commented on June 24, 2024

same here,
@gcrabtree any solution that you could suggest?
thanks

from react-native-socketio.

littlepsylo avatar littlepsylo commented on June 24, 2024

Sorry for the author but i could'nt wait more... so if this can help you guys: https://gist.github.com/littlepsylo/341ed91aed9870924de082d9d1eee580

This simple implementation of WebSocket works for me with an existing socket.io server on both android and ios. Beyond that, you will surely find more informations in the React-Native documentation or MDN, for example, about this API.

from react-native-socketio.

saalihou avatar saalihou commented on June 24, 2024

Made a PR that makes this library compatible with RN 0.29+
Check it out here: #46

from react-native-socketio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.