নেটওয়ার্ক যোগাযোগ

Chrome Apps TCP এবং UDP সংযোগের জন্য একটি নেটওয়ার্ক ক্লায়েন্ট হিসাবে কাজ করতে পারে৷ এই ডকটি আপনাকে দেখায় কিভাবে নেটওয়ার্কের মাধ্যমে ডেটা পাঠাতে এবং গ্রহণ করতে TCP এবং UDP ব্যবহার করতে হয়। আরও তথ্যের জন্য, সকেট UDP , সকেট TCP এবং সকেট TCP সার্ভার API দেখুন।

প্রয়োজনীয়তা প্রকাশ করুন

TCP বা UDP ব্যবহার করে এমন Chrome অ্যাপগুলির জন্য, ম্যানিফেস্টে সকেট এন্ট্রি যোগ করুন এবং IP শেষ বিন্দু অনুমতির নিয়মগুলি নির্দিষ্ট করুন৷ উদাহরণ স্বরূপ:

"sockets": {
    "udp": {
      "send": ["host-pattern1", ...],
      "bind": ["host-pattern2", ...],
      ...
    },
    "tcp" : {
      "connect": ["host-pattern1", ...],
      ...
    },
    "tcpServer" : {
      "listen": ["host-pattern1", ...],
      ...
    }
  }

সকেট "হোস্ট-প্যাটার্ন" এন্ট্রিগুলির সিনট্যাক্স এই নিয়মগুলি অনুসরণ করে:

<host-pattern> := <host> | ':' <port> | <host> ':' <port>
<host> := '*' | '*.' <anychar except '/' and '*'>+
<port> := '*' | <port number between 1 and 65535>)

সিনট্যাক্সের বিশদ বিবরণের জন্য সকেট ম্যানিফেস্ট কী দেখুন।

সকেট ম্যানিফেস্ট এন্ট্রির উদাহরণ:

  • { "tcp": { "connect" : "*:23" } } -কোন হোস্টের 23 পোর্টে সংযোগ করা হচ্ছে
  • { "tcp": { "connect" : ["*:23", "*:80"] } } -কোন হোস্টের 23 বা 80 পোর্টে সংযোগ করা হচ্ছে
  • { "tcp": { "connect" : "www.example.com:23" } }www.example.com এর 23 নম্বর পোর্ট সংযোগ
  • { "tcp": { "connect" : "" } } – যেকোন হোস্টের যেকোনো পোর্ট সংযোগ করা
  • { "udp": { "send" : ":99" } } যেকোনো হোস্টের 99 নম্বর পোর্টে UDP প্যাকেট পাঠানো
  • { "udp": { "bind" : ":8899" } } UDP প্যাকেট পেতে স্থানীয় পোর্ট 8899 বাইন্ডিং
  • { "tcpServer": { "listen" : ":8080" } } -TCP স্থানীয় পোর্ট 8080 এ শোনা

TCP ব্যবহার করে

Chrome Apps টিসিপি সমর্থন করে এমন যেকোনো পরিষেবার সাথে সংযোগ করতে পারে।

একটি সকেট সংযোগ

এখানে একটি নমুনা দেখানো হয়েছে কিভাবে একটি সকেটে ( sockets.tcp.connect ) সংযোগ করতে হয়:

chrome.sockets.tcp.create({}, function(createInfo) {
  chrome.sockets.tcp.connect(createInfo.socketId,
    IP, PORT, onConnectedCallback);
});

socketId একটি হ্যান্ডেল রাখুন যাতে আপনি পরে এই সকেটে ডেটা ( sockets.tcp.send ) পেতে এবং পাঠাতে পারেন।

থেকে গ্রহণ করা এবং একটি সকেটে পাঠানো

( sockets.tcp.onReceive ) থেকে গ্রহণ করা এবং সকেটে পাঠানো ArrayBuffer অবজেক্ট ব্যবহার করে। ArrayBuffers সম্পর্কে জানতে, ওভারভিউ, JavaScript টাইপ করা অ্যারে এবং টিউটোরিয়াল দেখুন, কিভাবে ArrayBuffer কে স্ট্রিং-এ এবং থেকে রূপান্তর করা যায়

chrome.sockets.tcp.send(socketId, arrayBuffer, onSentCallback);
chrome.sockets.tcp.onReceive.addListener(function(info) {
  if (info.socketId != socketId)
    return;
  // info.data is an arrayBuffer.
});

একটি সকেট থেকে সংযোগ বিচ্ছিন্ন করা হচ্ছে

এখানে কিভাবে সংযোগ বিচ্ছিন্ন করতে হয় ( sockets.tcp.disconnect ):

chrome.sockets.tcp.disconnect(socketId);

UDP ব্যবহার করে

Chrome Apps UDP সমর্থন করে এমন যেকোনো পরিষেবার সাথে সংযোগ করতে পারে৷

ডেটা পাঠানো হচ্ছে

ইউডিপি ব্যবহার করে নেটওয়ার্কে কীভাবে ডেটা ( sockets.udp.send ) পাঠাতে হয় তা এখানে একটি নমুনা রয়েছে:

// Create the Socket
chrome.sockets.udp.create({}, function(socketInfo) {
  // The socket is created, now we can send some data
  var socketId = socketInfo.socketId;
  chrome.sockets.udp.send(socketId, arrayBuffer,
    '127.0.0.1', 1337, function(sendInfo) {
      console.log("sent " + sendInfo.bytesSent);
  });
});

তথ্য গ্রহণ

এই উদাহরণটি 'ডেটা পাঠানোর' উদাহরণের অনুরূপ, আমরা ডেটা প্রাপ্তির জন্য একটি ইভেন্ট হ্যান্ডলার সেটআপ না করে।

var socketId;

// Handle the "onReceive" event.
var onReceive = function(info) {
  if (info.socketId !== socketId)
    return;
  console.log(info.data);
};

// Create the Socket
chrome.sockets.udp.create({}, function(socketInfo) {
  socketId = socketInfo.socketId;
  // Setup event handler and bind socket.
  chrome.sockets.udp.onReceive.addListener(onReceive);
  chrome.sockets.udp.bind(socketId,
    "0.0.0.0", 0, function(result) {
      if (result < 0) {
        console.log("Error binding socket.");
        return;
      }
      chrome.sockets.udp.send(socketId, arrayBuffer,
        '127.0.0.1', 1337, function(sendInfo) {
          console.log("sent " + sendInfo.bytesSent);
      });
  });
});

TCP সার্ভার ব্যবহার করে

ক্রোম অ্যাপগুলি sockets.tcpServer API ব্যবহার করে TCP সার্ভার হিসাবে কাজ করতে পারে।

একটি TCP সার্ভার সকেট তৈরি করা হচ্ছে

sockets.tcpServer.create দিয়ে একটি TCP সার্ভার সকেট তৈরি করুন।

chrome.sockets.tcpServer.create({}, function(createInfo) {
  listenAndAccept(createInfo.socketId);
});

ক্লায়েন্ট সংযোগ গ্রহণ

একটি TCP সার্ভার সকেটে সংযোগগুলি ( sockets.tcpServer.listen ) কীভাবে গ্রহণ করতে হয় তা এখানে একটি নমুনা রয়েছে:

function listenAndAccept(socketId) {
  chrome.sockets.tcpServer.listen(socketId,
    IP, PORT, function(resultCode) {
      onListenCallback(socketId, resultCode)
  });
}

socketId একটি হ্যান্ডেল রাখুন যাতে আপনি পরে নতুন সংযোগ গ্রহণ করতে পারেন ( sockets.tcpServer.onAccept )।

var serverSocketId;
function onListenCallback(socketId, resultCode) {
  if (resultCode < 0) {
    console.log("Error listening:" +
      chrome.runtime.lastError.message);
    return;
  }
  serverSocketId = socketId;
  chrome.sockets.tcpServer.onAccept.addListener(onAccept)
}

যখন একটি নতুন সংযোগ প্রতিষ্ঠিত হয়, তখন নতুন TCP সংযোগের clientSocketId দিয়ে onAccept আহ্বান করা হয়। ক্লায়েন্ট সকেট আইডি অবশ্যই sockets.tcp API এর সাথে ব্যবহার করতে হবে। নতুন সংযোগের সকেট ডিফল্টরূপে বিরাম দেওয়া হয়। ডেটা গ্রহণ শুরু করতে sockets.tcp.setPaused দিয়ে এটিকে আন-পজ করুন।

function onAccept(info) {
  if (info.socketId != serverSocketId)
    return;

  // A new TCP connection has been established.
  chrome.sockets.tcp.send(info.clientSocketId, data,
    function(resultCode) {
      console.log("Data sent to new TCP client connection.")
  });
  // Start receiving data.
  chrome.sockets.tcp.onReceive.addListener(function(recvInfo) {
    if (recvInfo.socketId != info.clientSocketId)
      return;
    // recvInfo.data is an arrayBuffer.
  });
  chrome.sockets.tcp.setPaused(false);
}

ক্লায়েন্ট সংযোগ গ্রহণ বন্ধ করুন

নতুন সংযোগ গ্রহণ বন্ধ করতে সার্ভার সকেট আইডিতে sockets.tcp.disconnect কল করুন।

chrome.sockets.tcpServer.onAccept.removeListener(onAccept);
chrome.sockets.tcpServer.disconnect(serverSocketId);