i broke it :)
This commit is contained in:
		
							parent
							
								
									3280dfaa58
								
							
						
					
					
						commit
						49989b0e58
					
				
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							@ -30,12 +30,12 @@ npx cap sync
 | 
				
			|||||||
### create(...)
 | 
					### create(...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```typescript
 | 
					```typescript
 | 
				
			||||||
create(options: { id: string; host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean; }) => Promise<void>
 | 
					create(options: { id: string; }) => Promise<void>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Param         | Type                                                                                                            |
 | 
					| Param         | Type                         |
 | 
				
			||||||
| ------------- | --------------------------------------------------------------------------------------------------------------- |
 | 
					| ------------- | ---------------------------- |
 | 
				
			||||||
| **`options`** | <code>{ id: string; host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean; }</code> |
 | 
					| **`options`** | <code>{ id: string; }</code> |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--------------------
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -43,12 +43,12 @@ create(options: { id: string; host: string; port: number; useTLS?: boolean; acce
 | 
				
			|||||||
### connect(...)
 | 
					### connect(...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```typescript
 | 
					```typescript
 | 
				
			||||||
connect(options: { id: string; }) => Promise<void>
 | 
					connect(options: { id: string; host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean; }) => Promise<void>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Param         | Type                         |
 | 
					| Param         | Type                                                                                                            |
 | 
				
			||||||
| ------------- | ---------------------------- |
 | 
					| ------------- | --------------------------------------------------------------------------------------------------------------- |
 | 
				
			||||||
| **`options`** | <code>{ id: string; }</code> |
 | 
					| **`options`** | <code>{ id: string; host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean; }</code> |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--------------------
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,138 @@
 | 
				
			|||||||
 | 
					package software.eskimo.capacitor.sockets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.os.Handler;
 | 
				
			||||||
 | 
					import android.os.Looper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.BufferedReader;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
 | 
					import java.io.OutputStream;
 | 
				
			||||||
 | 
					import java.net.Socket;
 | 
				
			||||||
 | 
					import java.net.InetSocketAddress;
 | 
				
			||||||
 | 
					import java.util.concurrent.ExecutorService;
 | 
				
			||||||
 | 
					import java.util.concurrent.Executors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.net.ssl.SSLSocket;
 | 
				
			||||||
 | 
					import javax.net.ssl.SSLSocketFactory;
 | 
				
			||||||
 | 
					import javax.net.ssl.TrustManager;
 | 
				
			||||||
 | 
					import javax.net.ssl.X509TrustManager;
 | 
				
			||||||
 | 
					import javax.net.ssl.SSLContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface SocketDelegate {
 | 
				
			||||||
 | 
					    void didChangeState(String socketId, String state);
 | 
				
			||||||
 | 
					    void didReceiveMessage(String socketId, String message);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class SocketConnection {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String id;
 | 
				
			||||||
 | 
					    private String host;
 | 
				
			||||||
 | 
					    private int port;
 | 
				
			||||||
 | 
					    private boolean useTLS;
 | 
				
			||||||
 | 
					    private boolean acceptInvalidCertificates;
 | 
				
			||||||
 | 
					    private SocketDelegate delegate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Socket socket;
 | 
				
			||||||
 | 
					    private ExecutorService executor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public SocketConnection(String id, String host, int port, boolean useTLS, boolean acceptInvalidCertificates) {
 | 
				
			||||||
 | 
					        this.id = id;
 | 
				
			||||||
 | 
					        this.host = host;
 | 
				
			||||||
 | 
					        this.port = port;
 | 
				
			||||||
 | 
					        this.useTLS = useTLS;
 | 
				
			||||||
 | 
					        this.acceptInvalidCertificates = acceptInvalidCertificates;
 | 
				
			||||||
 | 
					        this.executor = Executors.newSingleThreadExecutor();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDelegate(SocketDelegate delegate) {
 | 
				
			||||||
 | 
					        this.delegate = delegate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void connect() {
 | 
				
			||||||
 | 
					        executor.execute(() -> {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                if (useTLS) {
 | 
				
			||||||
 | 
					                    SSLSocketFactory factory;
 | 
				
			||||||
 | 
					                    if (acceptInvalidCertificates) {
 | 
				
			||||||
 | 
					                        SSLContext sslContext = SSLContext.getInstance("TLS");
 | 
				
			||||||
 | 
					                        TrustManager[] trustManagers = new TrustManager[]{
 | 
				
			||||||
 | 
					                            new X509TrustManager() {
 | 
				
			||||||
 | 
					                                @Override
 | 
				
			||||||
 | 
					                                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
 | 
				
			||||||
 | 
					                                    return null;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                @Override
 | 
				
			||||||
 | 
					                                public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                @Override
 | 
				
			||||||
 | 
					                                public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        sslContext.init(null, trustManagers, new java.security.SecureRandom());
 | 
				
			||||||
 | 
					                        factory = sslContext.getSocketFactory();
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    socket = factory.createSocket();
 | 
				
			||||||
 | 
					                    socket.connect(new InetSocketAddress(host, port));
 | 
				
			||||||
 | 
					                    delegate.didChangeState(id, "connected");
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    socket = new Socket();
 | 
				
			||||||
 | 
					                    socket.connect(new InetSocketAddress(host, port));
 | 
				
			||||||
 | 
					                    delegate.didChangeState(id, "connected");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                listenForMessages();
 | 
				
			||||||
 | 
					            } catch (Exception e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                delegate.didChangeState(id, "disconnected");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void send(String message) {
 | 
				
			||||||
 | 
					        executor.execute(() -> {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                if (socket != null && socket.isConnected()) {
 | 
				
			||||||
 | 
					                    OutputStream outputStream = socket.getOutputStream();
 | 
				
			||||||
 | 
					                    outputStream.write(message.getBytes());
 | 
				
			||||||
 | 
					                    outputStream.flush();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (Exception e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void disconnect() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            if (socket != null && !socket.isClosed()) {
 | 
				
			||||||
 | 
					                socket.close();
 | 
				
			||||||
 | 
					                delegate.didChangeState(id, "disconnected");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void listenForMessages() {
 | 
				
			||||||
 | 
					        executor.execute(() -> {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
 | 
				
			||||||
 | 
					                char[] buffer = new char[1024]; // Adjust buffer size as needed
 | 
				
			||||||
 | 
					                int charsRead;
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                while ((charsRead = reader.read(buffer)) != -1) {
 | 
				
			||||||
 | 
					                    String message = new String(buffer, 0, charsRead);
 | 
				
			||||||
 | 
					                    delegate.didReceiveMessage(id, message);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (Exception e) {
 | 
				
			||||||
 | 
					                e.printStackTrace();
 | 
				
			||||||
 | 
					                disconnect();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,11 +1,60 @@
 | 
				
			|||||||
package software.eskimo.capacitor.sockets;
 | 
					package software.eskimo.capacitor.sockets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Sockets {
 | 
					public class Sockets implements SocketDelegate {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String echo(String value) {
 | 
					    private List<SocketConnection> sockets = new ArrayList<>();
 | 
				
			||||||
        Log.i("Echo", value);
 | 
					    private SocketsPlugin plugin;
 | 
				
			||||||
        return value;
 | 
					
 | 
				
			||||||
 | 
					    public Sockets(SocketsPlugin plugin) {
 | 
				
			||||||
 | 
					        this.plugin = plugin;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void didChangeState(String socketId, String state) {
 | 
				
			||||||
 | 
					        plugin.notifyStateChange(socketId, state);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void didReceiveMessage(String socketId, String message) {
 | 
				
			||||||
 | 
					        Log.e("Sockets", "Received message: " + message);
 | 
				
			||||||
 | 
					        plugin.notifyMessageReceived(socketId, message);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public SocketConnection create(String id, String host, int port, boolean useTLS, boolean acceptInvalidCertificates) {
 | 
				
			||||||
 | 
					        SocketConnection socket = new SocketConnection(id, host, port, useTLS, acceptInvalidCertificates);
 | 
				
			||||||
 | 
					        socket.setDelegate(this);
 | 
				
			||||||
 | 
					        sockets.add(socket);
 | 
				
			||||||
 | 
					        return socket;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void connect(String id) {
 | 
				
			||||||
 | 
					        for (SocketConnection socket : sockets) {
 | 
				
			||||||
 | 
					            if (socket.id.equals(id)) {
 | 
				
			||||||
 | 
					                socket.connect();
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void send(String id, String message) {
 | 
				
			||||||
 | 
					        for (SocketConnection socket : sockets) {
 | 
				
			||||||
 | 
					            if (socket.id.equals(id)) {
 | 
				
			||||||
 | 
					                socket.send(message);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void disconnect(String id) {
 | 
				
			||||||
 | 
					        for (SocketConnection socket : sockets) {
 | 
				
			||||||
 | 
					            if (socket.id.equals(id)) {
 | 
				
			||||||
 | 
					                socket.disconnect();
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
package software.eskimo.capacitor.sockets;
 | 
					package software.eskimo.capacitor.sockets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.util.Log;
 | 
				
			||||||
import com.getcapacitor.JSObject;
 | 
					import com.getcapacitor.JSObject;
 | 
				
			||||||
import com.getcapacitor.Plugin;
 | 
					import com.getcapacitor.Plugin;
 | 
				
			||||||
import com.getcapacitor.PluginCall;
 | 
					import com.getcapacitor.PluginCall;
 | 
				
			||||||
@ -9,14 +10,61 @@ import com.getcapacitor.annotation.CapacitorPlugin;
 | 
				
			|||||||
@CapacitorPlugin(name = "Sockets")
 | 
					@CapacitorPlugin(name = "Sockets")
 | 
				
			||||||
public class SocketsPlugin extends Plugin {
 | 
					public class SocketsPlugin extends Plugin {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Sockets implementation = new Sockets();
 | 
					    private Sockets implementation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void load() {
 | 
				
			||||||
 | 
					        implementation = new Sockets(this);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void notifyStateChange(String socketId, String state) {
 | 
				
			||||||
 | 
					        JSObject data = new JSObject();
 | 
				
			||||||
 | 
					        data.put("id", socketId);
 | 
				
			||||||
 | 
					        data.put("state", state);
 | 
				
			||||||
 | 
					        notifyListeners("state", data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void notifyMessageReceived(String socketId, String message) {
 | 
				
			||||||
 | 
					        JSObject data = new JSObject();
 | 
				
			||||||
 | 
					        data.put("id", socketId);
 | 
				
			||||||
 | 
					        data.put("message", message);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Log.e("SocketsPlugin", "Received message: " + message);
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        notifyListeners("message", data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PluginMethod
 | 
					    @PluginMethod
 | 
				
			||||||
    public void echo(PluginCall call) {
 | 
					    public void create(PluginCall call) {
 | 
				
			||||||
        String value = call.getString("value");
 | 
					        String id = call.getString("id", java.util.UUID.randomUUID().toString());
 | 
				
			||||||
 | 
					        String host = call.getString("host");
 | 
				
			||||||
 | 
					        int port = call.getInt("port");
 | 
				
			||||||
 | 
					        boolean useTLS = call.getBoolean("useTLS", false);
 | 
				
			||||||
 | 
					        boolean acceptInvalidCertificates = call.getBoolean("acceptInvalidCertificates", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        JSObject ret = new JSObject();
 | 
					        implementation.create(id, host, port, useTLS, acceptInvalidCertificates);
 | 
				
			||||||
        ret.put("value", implementation.echo(value));
 | 
					        call.resolve();
 | 
				
			||||||
        call.resolve(ret);
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PluginMethod
 | 
				
			||||||
 | 
					    public void connect(PluginCall call) {
 | 
				
			||||||
 | 
					        String id = call.getString("id");
 | 
				
			||||||
 | 
					        implementation.connect(id);
 | 
				
			||||||
 | 
					        call.resolve();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PluginMethod
 | 
				
			||||||
 | 
					    public void send(PluginCall call) {
 | 
				
			||||||
 | 
					        String id = call.getString("id");
 | 
				
			||||||
 | 
					        String message = call.getString("message");
 | 
				
			||||||
 | 
					        implementation.send(id, message);
 | 
				
			||||||
 | 
					        call.resolve();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PluginMethod
 | 
				
			||||||
 | 
					    public void disconnect(PluginCall call) {
 | 
				
			||||||
 | 
					        String id = call.getString("id");
 | 
				
			||||||
 | 
					        implementation.disconnect(id);
 | 
				
			||||||
 | 
					        call.resolve();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -9,30 +9,21 @@ protocol SocketDelegate: AnyObject {
 | 
				
			|||||||
public class Socket: NSObject {
 | 
					public class Socket: NSObject {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    var id: String
 | 
					    var id: String
 | 
				
			||||||
    var host: String
 | 
					 | 
				
			||||||
    var port: Int
 | 
					 | 
				
			||||||
    var useTLS: Bool
 | 
					 | 
				
			||||||
    var acceptInvalidCertificates: Bool
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    var connection: NWConnection?
 | 
					    var connection: NWConnection?
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    weak var delegate: SocketDelegate?
 | 
					    weak var delegate: SocketDelegate?
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public init(id: String, host: String, port: Int, useTLS: Bool, acceptInvalidCertificates: Bool) {
 | 
					    public init(id: String) {
 | 
				
			||||||
        self.id = id
 | 
					        self.id = id
 | 
				
			||||||
        self.host = host
 | 
					 | 
				
			||||||
        self.port = port
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        self.useTLS = useTLS
 | 
					 | 
				
			||||||
        self.acceptInvalidCertificates = acceptInvalidCertificates
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public func connect() {
 | 
					    public func connect(host: String, port: Int, useTLS: Bool, acceptInvalidCertificates: Bool) {
 | 
				
			||||||
        let parameters = NWParameters.tcp
 | 
					        let parameters = NWParameters.tcp
 | 
				
			||||||
        if self.useTLS {
 | 
					        if useTLS {
 | 
				
			||||||
            let tls = NWProtocolTLS.Options()
 | 
					            let tls = NWProtocolTLS.Options()
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            if (self.acceptInvalidCertificates) {
 | 
					            if (acceptInvalidCertificates) {
 | 
				
			||||||
                sec_protocol_options_set_verify_block(tls.securityProtocolOptions, { (sec_protocol_metadata, sec_trust, sec_protocol_verify_complete) in
 | 
					                sec_protocol_options_set_verify_block(tls.securityProtocolOptions, { (sec_protocol_metadata, sec_trust, sec_protocol_verify_complete) in
 | 
				
			||||||
                    sec_protocol_verify_complete(true)
 | 
					                    sec_protocol_verify_complete(true)
 | 
				
			||||||
                }, DispatchQueue.global())
 | 
					                }, DispatchQueue.global())
 | 
				
			||||||
@ -41,7 +32,7 @@ public class Socket: NSObject {
 | 
				
			|||||||
            parameters.defaultProtocolStack.applicationProtocols.insert(tls, at: 0)
 | 
					            parameters.defaultProtocolStack.applicationProtocols.insert(tls, at: 0)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        let connection = NWConnection(host: NWEndpoint.Host(self.host), port: NWEndpoint.Port(String(self.port))!, using: parameters)
 | 
					        let connection = NWConnection(host: NWEndpoint.Host(host), port: NWEndpoint.Port(String(port))!, using: parameters)
 | 
				
			||||||
        connection.stateUpdateHandler = self.stateDidChange(to:)
 | 
					        connection.stateUpdateHandler = self.stateDidChange(to:)
 | 
				
			||||||
        self.receive(on: connection)
 | 
					        self.receive(on: connection)
 | 
				
			||||||
        connection.start(queue: .main)
 | 
					        connection.start(queue: .main)
 | 
				
			||||||
 | 
				
			|||||||
@ -29,16 +29,16 @@ enum SocketState:String {
 | 
				
			|||||||
        ])
 | 
					        ])
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @objc public func create(id: String, host: String, port: Int, useTLS: Bool = false, acceptInvalidCertificates: Bool = false) -> Socket {
 | 
					    @objc public func create(id: String) -> Socket {
 | 
				
			||||||
        let socket = Socket(id: id, host: host, port: port, useTLS: useTLS, acceptInvalidCertificates: acceptInvalidCertificates)
 | 
					        let socket = Socket(id: id)
 | 
				
			||||||
        socket.delegate = self
 | 
					        socket.delegate = self
 | 
				
			||||||
        sockets.append(socket)
 | 
					        sockets.append(socket)
 | 
				
			||||||
        return socket
 | 
					        return socket
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @objc public func connect(id: String) {
 | 
					    @objc public func connect(id: String, host: String, port: Int, useTLS: Bool = false, acceptInvalidCertificates: Bool = false) {
 | 
				
			||||||
        if let socket = self.socket(with: id) {
 | 
					        if let socket = self.socket(with: id) {
 | 
				
			||||||
            socket.connect()
 | 
					            socket.connect(host: host, port: port, useTLS: useTLS, acceptInvalidCertificates: acceptInvalidCertificates)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -19,19 +19,17 @@ public class SocketsPlugin: CAPPlugin, CAPBridgedPlugin {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @objc func create(_ call: CAPPluginCall) {
 | 
					    @objc func create(_ call: CAPPluginCall) {
 | 
				
			||||||
        let id = call.getString("id") ?? UUID().uuidString
 | 
					        let id = call.getString("id") ?? UUID().uuidString
 | 
				
			||||||
        let host = call.getString("host") ?? ""
 | 
					        let socket = implementation.create(id: id)
 | 
				
			||||||
        let port = call.getInt("port") ?? 0
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        let useTLS = call.getBool("useTLS") ?? false
 | 
					 | 
				
			||||||
        let acceptInvalidCertificates = call.getBool("acceptInvalidCertificates") ?? false
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        let socket = implementation.create(id: id, host: host, port: port, useTLS: useTLS, acceptInvalidCertificates: acceptInvalidCertificates)
 | 
					 | 
				
			||||||
        call.resolve()
 | 
					        call.resolve()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @objc func connect(_ call: CAPPluginCall) {
 | 
					    @objc func connect(_ call: CAPPluginCall) {
 | 
				
			||||||
		let id = call.getString("id") ?? ""
 | 
							let id = call.getString("id") ?? ""
 | 
				
			||||||
		implementation.connect(id: id)
 | 
					        let host = call.getString("host") ?? ""
 | 
				
			||||||
 | 
					        let port = call.getInt("port") ?? 0
 | 
				
			||||||
 | 
					        let useTLS = call.getBool("useTLS") ?? false
 | 
				
			||||||
 | 
					        let acceptInvalidCertificates = call.getBool("acceptInvalidCertificates") ?? false
 | 
				
			||||||
 | 
							implementation.connect(id: id, host: host, port: port, useTLS: useTLS, acceptInvalidCertificates: acceptInvalidCertificates)
 | 
				
			||||||
        call.resolve()
 | 
					        call.resolve()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
import { PluginListenerHandle } from "@capacitor/core";
 | 
					import { PluginListenerHandle } from "@capacitor/core";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface SocketsPlugin {
 | 
					export interface SocketsPlugin {
 | 
				
			||||||
  create(options: { id: string; host: string; port: number, useTLS?: boolean, acceptInvalidCertificates?: boolean }): Promise<void>;
 | 
					  create(options: { id: string; }): Promise<void>;
 | 
				
			||||||
  connect(options: { id: string; }): Promise<void>;
 | 
					  connect(options: { id: string; host: string; port: number, useTLS?: boolean, acceptInvalidCertificates?: boolean }): Promise<void>;
 | 
				
			||||||
  send(options: { id: string; message: string }): Promise<void>;
 | 
					  send(options: { id: string; message: string }): Promise<void>;
 | 
				
			||||||
  disconnect(options: { id: string }): Promise<void>;
 | 
					  disconnect(options: { id: string }): Promise<void>;
 | 
				
			||||||
  close(options: { id: string }): Promise<void>;
 | 
					  close(options: { id: string }): Promise<void>;
 | 
				
			||||||
 | 
				
			|||||||
@ -51,21 +51,13 @@ class SocketManager {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default class Socket {
 | 
					export default class Socket {
 | 
				
			||||||
	id: string;
 | 
						id: string;
 | 
				
			||||||
	host: string;
 | 
					 | 
				
			||||||
	port: number;
 | 
					 | 
				
			||||||
	useTLS: boolean;
 | 
					 | 
				
			||||||
	acceptInvalidCertificates: boolean;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private emitter: Emitter<SocketEvents>;
 | 
						private emitter: Emitter<SocketEvents>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	constructor(config: { id: string; host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean }) {
 | 
						constructor(config: { id: string }) {
 | 
				
			||||||
		console.log(config);
 | 
							console.log(config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.id = config.id;
 | 
							this.id = config.id;
 | 
				
			||||||
		this.host = config.host;
 | 
					 | 
				
			||||||
		this.port = config.port;
 | 
					 | 
				
			||||||
		this.useTLS = config.useTLS ?? false;
 | 
					 | 
				
			||||||
		this.acceptInvalidCertificates = config.acceptInvalidCertificates ?? false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.emitter = mitt<SocketEvents>();
 | 
							this.emitter = mitt<SocketEvents>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,23 +72,23 @@ export default class Socket {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	create() {
 | 
						create() {
 | 
				
			||||||
		Sockets.create({
 | 
							Sockets.create({
 | 
				
			||||||
			id: this.id,
 | 
								id: this.id
 | 
				
			||||||
			host: this.host,
 | 
					 | 
				
			||||||
			port: this.port,
 | 
					 | 
				
			||||||
			useTLS: this.useTLS,
 | 
					 | 
				
			||||||
			acceptInvalidCertificates: this.acceptInvalidCertificates,
 | 
					 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	connect() {
 | 
						connect(config: { host: string; port: number; useTLS?: boolean; acceptInvalidCertificates?: boolean }) {
 | 
				
			||||||
		Sockets.connect({
 | 
							Sockets.connect({
 | 
				
			||||||
			id: this.id,
 | 
								id: this.id,
 | 
				
			||||||
 | 
								host: config.host,
 | 
				
			||||||
 | 
								port: config.port,
 | 
				
			||||||
 | 
								useTLS: config.useTLS ?? false,
 | 
				
			||||||
 | 
								acceptInvalidCertificates: config.acceptInvalidCertificates ?? false
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	disconnect() {
 | 
						disconnect() {
 | 
				
			||||||
		Sockets.disconnect({
 | 
							Sockets.disconnect({
 | 
				
			||||||
			id: this.id,
 | 
								id: this.id
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user