0
هیچ محصولی در سبد خرید نیست.

مجموع: تومان

برنامه نویسی سوکت در React Native – ری اکت نیتیو

1398-11-08
مدیر سایت

پلاگین سوکت نیتیو جاوا (java socket native) برای react native  اندروید.

در این جا یک پیاده سازی پایه از سوکت های جاوا در اندروید را ارائه میدهیم که امکان اجرای یک سوکت نیتیو (socket native)  مشتری  و سرور را داراست.

 برای این کار به RN 0.47  یا بالاتر نیاز دارید.

ویژگی ها

1)محدودیتی در طول پیام ارسالی بین مشتری و سرور وجود ندارد.

2)در نبود سروز مشتری میتواند به  طور خودکار متصل (connect)  شود.

 

ست آپ (set up)

قدم اول – نصب NPM

npm install --save react-native-sockets

قدم دوم  – آپدیت کردن تنظیمات Gradle

// file: android/settings.gradle
...
 
include ':react-native-sockets'
project(':react-native-sockets').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sockets/android')

 

قدم سوم – آپدیت کردن ساختار Gradle  اپلیکیشن

// file: android/app/build.gradle
...
 
dependencies {
    ...
    compile project(':react-native-sockets')
}

 

قدم چهارم –  MainApplication.java

...
import com.stonem.sockets.SocketsPackage;
 
...
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          ...
          new SocketsPackage()
          ...

 

استفاده از پلاگین

سرور

import Sockets from 'react-native-sockets';
...

 

ایجاد یک سرور سوکت (socket server)

    let port = 8080;
    Sockets.startServer(port);

 

ارسال پیام به مشتری

    Sockets.emit("message to client", clientAddr);

 

بستن سرور

   Sockets.close();

 

پیغام گیرنده ها

    import { DeviceEventEmitter } from 'react-native';
 
    //on started
     DeviceEventEmitter.addListener('socketServer_connected', () => {
      console.log('socketServer_connected');
    });
    //on error
    DeviceEventEmitter.addListener('socketServer_error', (data) => {
      console.log('socketServer_error',data.error);
    });
    //on client connected
    DeviceEventEmitter.addListener('socketServer_clientConnected', (client) => {
      console.log('socketServer_clientConnected', client.id);
    });
    //on new message
    DeviceEventEmitter.addListener('socketServer_data', (payload) => {
      console.log('socketServer_data message:', payload.data);
      console.log('socketServer_data client id:', payload.client);
    });
    //on server closed
    DeviceEventEmitter.addListener('socketServer_closed', (data) => {
      console.log('socketServer_closed',data.error);
    });
    //on client disconnected
    DeviceEventEmitter.addListener('socketServer_clientDisconnected', (data) => {
      console.log('socketServer_clientDisconnected client id:', data.client);
    });

 

مشتری

import Sockets from 'react-native-sockets';
...

 

اتصال به سوکت سرور (socket server)

    config={
        address: "192.168.1.1", //ip address of server
        port: 8080, //port of socket server
        timeout: 5000, // OPTIONAL (default 60000ms): timeout for response
        reconnect:true, //OPTIONAL (default false): auto-reconnect on lost server
        reconnectDelay:500, //OPTIONAL (default 500ms): how often to try to auto-reconnect
        maxReconnectAttempts:10, //OPTIONAL (default infinity): how many time to attemp to auto-reconnect
 
    }
     Sockets.startClient(config);

 

ارسال پیام به سرور

    Sockets.write("message to server");

 

قطع اتصال مشری 

   Sockets.disconnect();

 

پیغام گیرنده ها

    import { DeviceEventEmitter } from 'react-native';
 
    //on connected
     DeviceEventEmitter.addListener('socketClient_connected', () => {
      console.log('socketClient_connected');
    });
    //on timeout
    DeviceEventEmitter.addListener('socketClient_timeout', (data) => {
      console.log('socketClient_timeout',data.error);
    });
    //on error
    DeviceEventEmitter.addListener('socketClient_error', (data) => {
      console.log('socketClient_error',data.error);
    });
    //on new message
    DeviceEventEmitter.addListener('socketClient_data', (payload) => {
      console.log('socketClient_data message:', payload.data);
    });
    //on client closed
    DeviceEventEmitter.addListener('socketClient_closed', (data) => {
      console.log('socketClient_closed',data.error);
    });

 

Misc Functions

import Sockets from 'react-native-sockets';
...

 

گرفتن آدرس IP دستگاه

آرایه ای از آدرس IP را برای دستگاه برمیگرداند.

    Sockets.getIpAddress(ipList => {
      console.log('Ip address list', ipList);  
    }, err => {
      console.log('getIpAddress_error', err);
    })

 

چک کردن سرویس در دسترس

چک میکند که آبا یک سرور سوکت (socket server)  برای اتصال به شبکه در دسترس است یا خیر.

    ipAddress="192.168.1.1";
    port=8080;
    timeout=1000; //milliseconds
    Sockets.isServerAvailable(ipAddress,port,timeout,success => {
        Alert.alert("Socket server is available");
    }, err => {
        Alert.alert("Socket server is not available");
    })

 

 

نظرشما

نوشته های مرتبط


چه عواملی باعث می شود تا تبدیل به یک برنامه نویس خوب شویم؟ پرسیدن این سوال از خود و . . .

4 دقیقه
ادامه مطلب

فروم ها یکی از گزینه های مهم برای تهیه بک لینک ها می باشند. وب مسترها می توانند محتو . . .

3 دقیقه
ادامه مطلب

معرفی ابزار های طراحی وب سایت     Web Programming اگر برای اولین بار باشد که بخواهد بر . . .

5 دقیقه
ادامه مطلب

لیست فرم های خارجی برای بک لینک رایگان بروز رسانی: استفاده از فرم‌های خارجی برای ب . . .

8 دقیقه
ادامه مطلب