전자로 tcp 클라이언트를 만들 수 있습니까? 아니면 크롬 소켓 API에 액세스 할 수 있습니까?전자와 함께 tcp 클라이언트를 만들 수 있습니까
https://developer.chrome.com/apps/sockets_tcp
전자로 tcp 클라이언트를 만들 수 있습니까? 아니면 크롬 소켓 API에 액세스 할 수 있습니까?전자와 함께 tcp 클라이언트를 만들 수 있습니까
https://developer.chrome.com/apps/sockets_tcp
당신은 TCP 클라이언트를 구현하는 전자의 Node net
API를 사용할 수 있습니다.
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)
});
크롬 API가 있는지 쉽게 테스트 할 수 있습니다. 그렇지 않으면 노드 API를 사용합니다. 따라서 Chrome App과 Electron App 용 코드베이스가 동일합니다. 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)));
}
});
};
전자에서는 Node net
API을 사용하여 TCP 클라이언트를 구현할 수 있습니다.
작은 소켓 서버에서 SocketTest Java 응용 프로그램 (예 : HERE)으로이 샘플 코드를 시도해보십시오 (IP 주소를 변경하는 것을 잊지 마십시오).
연결되면 "세계!" 서버 측 문자열. 서버에서이 메시지를 보내려고 시도하십시오.
{
"nom":"Xplorer",
"prenom":"Yann"
}
안녕 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();
})
. 참조.
감사하지만 낮은 TCP 수준의 API가 필요합니다. – Teebo