2017-01-16 2 views

ответ

2

Вы можете использовать Node net API в Electron для реализации клиента TCP.

-1

Yo можно использовать socket.io-client. Пример кода:

//To connect to server 
var socket = io.connect("http://Ip of server to which you want to connect" + "port Number"); 

//And to listen for events see below code 
socket.on('event name', function (response) { 
    console.log("got from server", response) 
}); 
+0

Спасибо, но мне нужен низкий уровень API уровня TCP. – Teebo

2

Просто проверить, присутствует ли хром API. Если нет, я использую API-интерфейс узла. Так что у меня есть одна и та же база кода для моего приложения Chrome и моего приложения Electron. 2 API немного отличаются, поэтому я размещаю здесь, как это сделать.

let client = null; // node socket 
    let socketId; // chrome API socket id 

    function toBuffer(ab) { 
    return new Buffer(new Uint8Array(ab)); 
    } 

    function toArrayBuffer(buf) { 
    return new Uint8Array(buf).buffer; 
    } 

    function initConnToServer (ip, port) { 
    return new Promise((resolve, reject) => { 
     if(typeof chrome !== 'undefined') { 
     chrome.sockets.tcp.create({}, r => { 
      socketId = r.socketId; 
      chrome.sockets.tcp.connect(r.socketId, ip, port, code => resolve(code)); 
     }); 
     } else { 
     client = new net.Socket(); // return a Node socket 
     client.connect(port, ip); 
     client.on('connect',() => resolve()); 
     } 
    }); 
    }; 

    function sendToServer_simple (data) { 
    return new Promise((resolve, reject) => { 
     if(typeof chrome !== 'undefined') { 
     chrome.sockets.tcp.send(socketId, data, r => {}); 
     chrome.sockets.tcp.onReceive.addListener(receiveInfo => resolve(receiveInfo.data)); 
     } else { 
     client.write(toBuffer(data)); 
     client.on('data', data => resolve(toArrayBuffer(data))); 
     } 
    }); 
    }; 
1

Вы можете использовать Node net API в Electron для реализации клиента TCP.

Попробуйте использовать этот образец кода (не забудьте изменить IP-адрес) с помощью небольшого сервера сокетов в качестве приложения Java SocketTest, например (HERE).

При подключении вы должны увидеть «Мир!». строка на стороне сервера. Попробуйте послать это сообщение с сервера:

{ 
"nom":"Xplorer", 
"prenom":"Yann" 
} 

И вы должны увидеть Hello Yann! в вашей электронной консоли.

'use strict'; 

const electron = require('electron'); 

const app = electron.app; 

const path = require('path'); 
const url = require('url'); 
const net = require('net'); 


const BrowserWindow = electron.BrowserWindow; 

let mainWindow; 
var socketClient 


    const BrowserWindow = electron.BrowserWindow; 

    let mainWindow; 
    var socketClient 

    function createWindow() { 
     // Create the browser window. 
     mainWindow = new BrowserWindow({width: 800, height: 600,backgroundColor:'#FFFFFF', frame:false}) 

     // and load the index.html of the app. 
     mainWindow.loadURL(url.format({ 
     pathname: path.join(__dirname+'/html/', 'main.html'), 
     protocol: 'file:', 
     slashes: true 
     })) 

     // Open the DevTools. 
     //mainWindow.webContents.openDevTools() 

     // Emitted when the window is closed. 
     mainWindow.on('closed', function() { 
     // Dereference the window object, usually you would store windows 
     // in an array if your app supports multi windows, this is the time 
     // when you should delete the corresponding element. 
     mainWindow = null 
     }) 

     /* Instance socket on create window */ 
     console.log('Try to connect'); 
     socketClient = net.connect({host:'192.16.122.3', port:9042}, () => { 
     // 'connect' listener 
     console.log('connected to server!'); 
     socketClient.write('world!\r\n'); 
     }); 

     socketClient.on('data', (data) => { 
     console.log(data.toString()); 
     var person = JSON.parse(data); 

     console.log('Hello '+person.prenom+"!"); 

     }); 
     socketClient.on('end',() => { 
     console.log('disconnected from server'); 
     }); 

     //mainWindow.openDevTools(); 
    } 
    app.on('before-quit',function(){ 
     socketClient.end(); 
    }) 

Увидеть вас.

Смежные вопросы