Объект JCJSLocalClient это полнофункциональный асинхронный клиент обмена через именованные каналы (pipe)
В этом разделе перечислены свойства и методы объекта JCJSLocalClient плагина PluginNetwork
В JCJSLocalClient реализован протокол обмена jCjS,
гарантирующий неизменную доставку JS объектов между постами jCjS в рамках одного хоста.
Для совместимости со сторонним ПО, предусмотрен режим raw.
Пример использования находится в каталоге stuff/tests/pluginNetwork/LOC_Srv
Свойства (property)
Объект JCJSTcpClient имеет общие свойства указанные
в описательной части протокола обмена jCjS
ВНИМАНИЕ!!!, свойство protoSelf по умолчанию имеет значение 0
Пример использования:
// Загрузить плагин и Установить в JS конструторы объектов
post.loadPlugin('PluginNetwork').install(scriptEngine);
// Создать объект, к свойствам и
// методам которого можно обращаться в стиле Qt
var locClient = new JCJSLocalClient();
//свойство параметра чтение/запись:
// Чтение
var timeout = locClient.timeout;
// Запись
var timeout = 100;
locClient.timeout = timeout;
int locClient.socketDescriptor только чтение
Дескриптор соединения
var socketDesc = locClient.socketDescriptor;
int locClient.intrval чтение/запись
Интервал чтения из сокета
bool locClient.raw чтение/запись
Включение raw режима (по умолчанию выключен)
quint8 locClient.stopChar чтение/запись
В режиме raw: Символ конца приемной посылки (по умолчанию 0 - выключен)
String locClient.stopWord чтение/запись
В режиме raw: Слово конца приемной посылки (по умолчанию '' - выключен)
stopChar более приоритетнее чем stopWord
void locClient.readyRead(Variant message)
генерируется объектом JCJSlocClient при успешном приеме сообщения
// подсоединить к сигналу readyRead функцию обработчик
locClient.readyRead.connect(function messageRead(mess){
post.log("i", 'Сервер прислал сообщение: ' + JSON.stringify(mess))
});
// эквивалентно следующей конструкции
function messageRead(mess, socketDesc){
post.log("i", 'Сервер прислал сообщение: ' + JSON.stringify(mess));
}
locClient.readyRead.connect(messageRead);
// следующей тривиальной строкой можно автоматически отправлять эхо-ответ
locClient.readyRead.connect(locClient.sendMessage);
void locClient.connected() Сигнал
генерируется объектом JCJSlocClient при успешном подсоединении клиента к серверу
// подсоединить к сигналу connected функцию обработчик
locClient.connected.connect(function clientConnected(){
post.log("i", 'Есть соединение с сервером: serv=' + locClient.peerName + ' port=' + locClient.peerPort)
});
void locClient.disconnected() Сигнал
генерируется объектом JCJSlocClient при разъединении соединения с сервером
// подсоединить к сигналу disconnected функцию обработчик
locClient.disconnected.connect(function clientDisconnected(){
post.log("i", 'Разрыв соединения с сервером')
});
void locClient.error(String) Сигнал
генерируется объектом JCJSlocClient при ошибках в соединении с сервером
// подсоединить к сигналу error функцию обработчик
locClient.error.connect(function error(errStr){
post.log("i", 'Ошибка соединения: ' + errStr)
});
void locClient.protoSelfChange(newVer, oldVer) Сигнал
генерируется объектом JCJSlocClient если в процессе обмена протокол был изменен
locClient.protoSelfChange.connect(function protoSelfChange(newVer, oldVer){
if(newVer === 0 && oldVer > 0) {
post.log('w', 'было понижение версии. Встроенное шифрование crypt отключено');
post.log('w', 'cli: '+JSON.stringify(locClient.clientInfo()) );
}
});
void locClient.connectToServer(String pipeName) Функция
Подключиться к именованному каналу
if(locClient.connectToServer('pipeName')) // установить имя канала
post.log("i", "Client connected to pipe://" + locClient.clientInfo().serverName);
else
post.log("e", "Client not connected");
//----------------------------------------------
// равнозначно следующей записи
if(locClient.connectToServer('pipeName'))
post.log("i", "Client connected to pipe://" + locClient.clientInfo().serverName);
else
post.log("e", "Client not connected");
void locClient.closeConnection() Функция
разъеденить соединение
locClient.closeConnection();
bool locClient.isWork() Функция
bool locClient.isOpen() Функция синоним
Статус соединения
if(locClient.isWork())
{
locClient.closeConnection();
}
bool locClient.waitForReadyRead(int ms) Функция
Ожидание поступления данных
bool locClient.waitForReadyLine(int ms) Функция
Ожидание поступления строки
void locClient.clientInfo() Функция
Информация о соединении ввиде объекта
post.log('w', 'cli: '+JSON.stringify(locClient.clientInfo()) );