Исследование и применение современных web-технологий для реализации программного комплекса «Умная парковка»



Download 1,57 Mb.
Pdf ko'rish
bet6/9
Sana18.04.2022
Hajmi1,57 Mb.
#560570
1   2   3   4   5   6   7   8   9
Bog'liq
m th a.a.rapoport 2017

"name"

"sp-web"

"version"

"0.0.1"

"description"

"Web application for reserving a parking space and 
navigating to it"

"main"

"/src/index.js"

"devDependencies"
: {}, 
"scripts"
: { 
"build"

"gulp --harmony build:release"

"start"

"gulp --harmony webpack-dev-server"

"test"

"echo 
\"
Error: no test specified
\"
 && exit 1" 

}, 
"author"



"Artem Rapoport"

"license"

"ISC"

"repository"
: { 
"type"

"git"

"url"

"git+https://ar-rapoport@bitbucket.org/ar-rapoport/sp-web.git" 

}, 
"homepage"



"https://bitbucket.org/ar-rapoport/sp-web#readme"

"dependencies"
: { 
"autoprefixer"

"6.3.6"

"axios"

"0.12.0"

"babel"

"6.5.2"

"babel-core"

"6.10.4"

"babel-loader"

"6.2.4"

"babel-plugin-transform-runtime"

"6.4.3"

"babel-polyfill"

"6.9.1"

"babel-preset-es2015"

"6.9.0"

"babel-preset-react"

"6.5.0"

"babel-preset-stage-0"

"6.5.0"

"babel-register"

"6.9.0"

"css-loader"

"0.23.1"

"d3"

"4.5.0"

"es6-promise"

"3.0.2"

"extract-text-webpack-plugin"

"1.0.1"

"gulp"

"3.9.0"

"gulp-html-replace"

"1.5.4"

"gulp-rimraf"

"0.2.0"

"gulp-util"

"3.0.7"

"json-loader"

"0.5.4"

"jsx-loader"

"0.13.2"

"loader-utils"

"0.2.15"

"node-sass"

"4.3.0"

"normalize.css"

"3.0.3"

"postcss-loader"

"0.9.1"

"react"

"15.3.2"

"react-dom"

"15.3.0"

"react-hot-loader"

"1.3.0"

"react-router"

"2.8.1"

"sass-loader"

"4.1.1"

"style-loader"

"0.13.1"

"webpack"

"1.13.1"

"webpack-dev-server"

"1.14.1" 





59 
ПРИЛОЖЕНИЕ Б 
Пример кода функции HTTP-запроса на языке JavaScript 
import 
axios 
from 
'axios'

//библиотека для HTTP-запросов 
import 
ClientStore 
from 
'./ClientStore'

//хранилище WEB-клиента 
 
/** 
 * Функция получения данных с сервера 
 * 
@function 
getInfoFromServer 
 * 
@return 
{void} 
 * */ 
function 
getInfoFromServer
() { 
axios.get(
'/api/info'

//Получили "положительный" ответ с сервера с данными внутри. 

.
then
((response) => { 
//Перезаписываем данные в хранилище WEB-клиента. 

ClientStore.
rewriteContent
(response.data); 
}) 
//Получили "отрицательный" ответ с сервера (ошибку). 

.
catch
((response) => { 
//Сообщаем пользователю об ошибке. 

console
.
error
(
'Error while receiving response = '
, response.data); 
}); 



60 
ПРИЛОЖЕНИЕ В 
Пример кода функции HTTP-поллинга на языке JavaScript 
import 
axios 
from 
'axios'

//библиотека для HTTP-запросов 
import 
ClientStore 
from 
'./ClientStore'

//хранилище WEB-клиента 
 
let 
refreshId 

null

//id таймера интервала поллинга 
/** 
 * 
@function 
setInfoPolling 
 * 
@return 
{void} 
 * */ 
function 
setInfoPolling
() { 
refreshId 

setInterval

() => { 
axios.get(
'/api/info'

//Получили "положительный" ответ с сервера с данными внутри. 

.
then
((response) => { 
//Перезаписываем данные в хранилище WEB-клиента. 

ClientStore.
rewriteContent
(response.data); 
}) 
//Получили "отрицательный" ответ с сервера (ошибку). 

.
catch
((response) => { 
//Сообщаем пользователю об ошибке. 

console
.
error
(
'Error while receiving response = '
, response.data); 
}); 
}, 
1000 
); 

/** 
 * 
@function 
stopInfoPolling 
 * 
@return 
{void} 
 * */ 
function 
stopInfoPolling
() { 
if 
(
refreshId
) { 
clearInterval
(
refreshId
); 




61 
ПРИЛОЖЕНИЕ Г 
Пример кода класса SessionHandler, который описывает обработку данных с 
помощью WebSocket, на языке JavaScript 
const 
DATA_URL 

'data'

const 
GET_SNAPSHOT_RPC 

'getSnapshot'

/** 
 * Специальный обработчик для абстракции от методов session AutobahnJS (WAMP) 
 * 
@class 
SessionHandler 
 * */ 
class 
SessionHandler { 
/** 
* Приватное поле для хранения объекта сессии 

@private 

* */ 

_session 

null

/** 

@constructor 


@param 
{?Session} [session = null] - Сессия подключения клиента к серверу. По умолчанию 
равна null 
* */ 

constructor
(session = 
null
) { 
this
.
setSession
(session); 

/** 
* Метод для сохранения сессии в экземпляре SessionHandler-а 

@method 
setSession 

@param 
{?Session} [session = null] - Сессия подключения клиента к серверу. По умолчанию 
равна null 

@return 
{void} 
* */ 

setSession 
= (session = 
null
) => { 
this
.
_session 
= session; 
}; 
/** 
* Функция-колбэк для выполнения действий с пришедшими по подписке сообщениями 

@see 
http://autobahn.ws/js/reference.html#subscribe документация Autobahn Subscribe 


@callback 
subscriptionCallbackFn 

@param 
{Array} args - массив с payload-ом события (сообщения) 

@param 
{Object} kwargs - объект с payload-ом события (сообщения) 

@param 
{Object} details - объект, который предоставляет метаданные события (сообщения) 

@return 
{void} 
*/ 
 
/** 


62 
* Метод для подписки на сообщения об изменении данных 

@method 
subscribeToata 

@param 
{subscriptionCallbackFn} callbackFunction - действие, которое нужно выполнить при 
получении сообщения 

@return 
{Promise} 
* */ 

subscribeToata 
= (callbackFunction) => { 
if 
(!
this
.
_session
) { 
console
.
error
(
'Tried to subscribe to device data but no session was specified in 
SessionHandler'
); 
return null


return this
.
_session
.
subscribe
(
DATA_URL
, callbackFunction); 
}; 
/** 
* Метод для получения snapshot-а (для холодного старта) 

@method 
getSnapshot 

@return 
{Promise} 
* */ 

getSnapshot 
= () => { 
if 
(!
this
.
_session
) { 
console
.
error
(
'Tried get snapshot but no session was specified in SessionHandler'
); 
return null


return this
.
_session
.
call
(
GET_SNAPSHOT_RPC
); 
}; 



63 
ПРИЛОЖЕНИЕ Д 
Пример кода класса UpdateHandler, который описывает обработку данных 
при их обновлении с помощью буферизации, на языке JavaScript 
import 

as 
Constants 
from 
'../Constants'

//импортируем константы проекта 
import 

as 
eventsActions 
from 
'actions/eventsActions'

//импортируем действия хранилища данных 
 
class 
UpdateHandler { 
/** 
* id таймера с минимальным интервалом обновления 
* */ 

_interval 

null

/** 
* id таймера с максимальным интервалом обновления, при котором происходит форсированное 
обновление 
* */ 

_maxInterval 

null

/** 

@type 
{Boolean} 
* Флаг форсированного обновления 
* */ 

_forceApply 

false

/** 
* Экземпляр класса главного хранилища данных 
* */ 

_store 

null

/** 

@type 
{String} 
* Режим обновления (может быть обновлением или накоплением) 
* */ 

_mode 

null

/** 

@type 
{Object} 
* Объект с накопленными обновлениями вида {events: Map} 
* */ 

_accumulatedUpdates

constructor
(store) { 
this
.
_accumulatedUpdates 
= {
events

new 
Map()}; 
/* инициализируем начальное значения 
накопленных обновлений */ 

this
.
_store 
= store; 
//записываем экземпляр класса главного хранилища данных в поле 
класса 

clearInterval
(

Download 1,57 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish