I-Microsemi AN1256 Web Isicelo sabahleli
Isingeniso
I-JSON (i-JavaScript Object Notation) iyindinganiso evulekile file ifomethi esebenzisa umbhalo ofundeka umuntu wokushintshanisa idatha. Kuyifomethi yedatha evamile esetshenziselwa ukuxhumana kwesiphequluli/iseva engavumelaniyo.
Okwentsha web ukwakheka kwekhasi, ifomethi ye-JSON ingaba indawo yesitayela sokuqala se-AJAX. Qhathanisa ne-AJAX, usebenzisa i-JSON yenza i- Web ukuqaliswa kulula futhi kulula. Umthuthukisi udinga kuphela ukugxila web ukwakheka kwekhasi kanye ne Web ukufakwa kwesibambi kungase kukhishwe njengoba indlela yokufinyelela ye-JSON isivele isekelwa endaweni ngayinye WebAmamojula wesoftware ye-StaX.
Lo mbhalo usho umhlahlandlela wabahleli bonjiniyela wesoftware odinga ukuthuthukisa uhlelo Web ikhasi nge-JSON. Izinqubo zemininingwane kanye nesibampLes nayo ifakwe ezigabeni ezilandelayo.
Ukugeleza kokufinyelela kwedatha kwe-JSON
Kuphelileview
Nakhu ukugeleza kokufinyelela kwedatha kwe-JSON okuqalwa uxhumano lwe-HTTP lusuka kuklayenti(isiphequluli). Ithebula le-HTML lakhiwe ngendlela eguquguqukayo ngokuya ngedatha ye-JOSN eyamukelwe ukusuka ohlangothini lweseva(DUT).
Umfanekiso 1. Ukugeleza kokufinyelela phakathi kweklayenti neseva
Isicelo/Impendulo yedatha ye-JSON
Iphakethe lesicelo le-JSON lisekelwe endleleni yokuthunyelwe yesicelo se-HTTP futhi okuqukethwe kufanele kulandele ifomethi ye-MSCC JSON.
- Cela i-syntax ye-JSON:{“indlela”:” ","izimiso":[ ], “id:”jsonrpc”}
- Impendulo ivela ku- JSON syntax: {“iphutha”: ,"umphumela": , "id:"jsonrpc"}
Izifinyezo ezilandelayo zibonisa okuqukethwe kwe-JSON phakathi kwesiphequluli ne-DUT.
Umfanekiso 2. Isifinyezo sesicelo se-HTTP esivela kuklayenti
Umfanekiso 3. Isifinyezo sempendulo ye-HTTP evela kuseva
Ukucaciswa kwe-MSCC JSON
Ukuze uthole ulwazi olugcwele lwe-JSON okuhlanganisa indlela, ipharamitha, incazelo nokunye. Thayipha “http:// /json_spec” kubha yekheli lesiphequluli sakho. Kunenye indlela yokufinyelela esebenzisa igama lendlela ye-JSON ethi “jsonRpc.status.introspection.specific.inventory.get”, isetshenziselwa indlela ethile.
Umfanekiso 4. Isifinyezo sokucaciswa kwe-JSON web ikhasi
Web uhlaka
I Web uhlaka ku WebIsoftware ye-StaX isuselwe kumthombo ovulekile we-MooTools. Kuyiqoqo lezinsiza ze-JavaScript ezinelayisensi ye-MIT. (http://mootools.net/license.txt) Ibha yemenyu nokunye okuningi web amakhasi asekelwe kuhlaka. Kokubili i-algorithm ye-AJAX ne-JSON isivele ihlanganisiwe ezinhlelweni zayo.
Ngaphandle kwalokho, WebIsofthiwe ye-StaX inikeza ezinye izinsiza eziwusizo ku-JSON web ukwakheka kwekhasi.
- json.js - Sebenzisa ukudlulisa/ukwamukela idatha eguquguqukayo nge-syntax ye-JSON.
- dynforms.js - Sebenzisa ukuze wakhe ithebula le-HTML ngendlela eguquguqukayo.
- validate.js - Sebenzisa ukuze kuqinisekiswe ifomu le-HTML.
Amalabhulali e-JavaScript agcwele atholakala ngaphansi kohla lwemibhalo yesihlahla somthombo: webstax2\ vtss_appl\web\html\lib.
Umhlahlandlela we-JSON Web ukwakheka kwekhasi
Lesi sigaba siqondisa indlela yokuklama a web ikhasi elisuselwe kumitapo yolwazi ye-MSCC JavaScript. Sisebenzisa i-Mirror global emisiwe web ikhasi njenge-example lapha. Ukuxhumana okuvumelanayo kusekelwe endleleni yokufinyelela ye-HTTP JSON futhi wonke amapharamitha amisiwe emhlabeni wonke afakwe kuhlu kuthebula elilodwa le-HTML eliguqukayo.
I web isakhiwo sekhasi sibhalwe ngezansi futhi ikhodi yomthombo egcwele itholakala ngaphansi kohlu lwemibhalo yesihlahla somthombo: webstax2\vtss_appl\mirror\html\mirror_ctrl.htm. Ukuze uthole okujwayelekile okwengeziwe web amakhasi, bheka ingxenye yesithasiselo.
Ithebula Lokulungisa Isibuko ne-RMirror
Umfanekiso 5. Example lethebula elimisiwe lomhlaba jikelele
Hlela Web ikhasi
Isihloko se-HTML
Faka phakathi imitapo yolwazi ye-JS ebidingeka ku-HTML tag.
Qalisa insiza yethebula eliguqukayo
- Uma idokhumenti ye-HTML isilungile, shayela i-DynamicTable() ukuze uqalise insiza yetafula eguquguqukayo.
- I-DynamicTable() isetshenziselwa ukudala ithebula eliguqukayo ngemva kokuthola idatha ye-JSON.
- Ngemuva kwalokho izobiza i-applicationUpdate ukuze iqalise ukugeleza komyalo we-JSON.
- window.addEvent('domready', function() {
- // Dala ifomu elinomzimba wetafula ukuze uthole/udlulise idatha ye-JSON
- myDynamicTable = iDynamicTable entsha(“myTableContent”, “config”,”plusRowCtrlBar”);
4 - requestUpdate();
- });
Isicelo/Impendulo yedatha ye-JSON
- Uma idokhumenti ye-HTML isilungile, sebenzisa isiceloJsonDoc() ukuze uthumele isicelo se-JSON esithi “mirror.config.session.get” ukuze uthole ulwazi mayelana namaseshini amisiwe.
- Ngemva kokuthi idatha ye-JSON ye-“mirror.capabilities.get” yamukelwe, umsebenzi we-callback requestUpdate() uzocutshungulwa. Umsebenzi we-applicationUpdate uyobe usubiza okuthi “mirror.config.session.get” ukuze uthole ukucushwa kwamanje. Uma ukucushwa kwamanje kwamukelwa, i-function processUpdate ibizwa ngokuthi ukwakha ithebula elizoboniswa.
- isicelo somsebenziBuyekeza()
- {
- // Buyisela okuqukethwe kwethebula
- myDynamicTable.restore();
5 - // Leli thebula idatha ye-JSON emibili.
- requestJsonDoc(“mirror.config.session.get”, null, processUpdate, “config”);
- }
Cubungula idatha ye-JSON etholiwe
- I-function processUpdate() isetshenziselwa ukuhlela ithebula eliguqukayo ngemva kokuthola idatha ye-JSON.
- I-addRows() isetshenziselwa ukwengeza imigqa yethebula. myDynamicTable.update() isakhiwo
Ithebula le-HTML ngokuya ngedatha emigqeni yethebula.
- umsebenzi processUpdate(recv_json, name)
- {
- // Ziba inqubo uma kungekho datha etholiwe
- uma (!recv_json) {
- isixwayiso(“Ukuthola idatha eguquguqukayo kwehlulekile.”);
- buyela;
- }
- // Londoloza idatha ye-JSON eyamukelwe
- myDynamicTable.saveRecvJson(“config”, recv_json);
- // Engeza imigqa yetafula
- var table_rows = addRows(recv_json);
- i-myDynamicTable.addRows(imigqa_yethebula);
- // Buyekeza leli thebula eliguquguqukayo
- myDynamicTable.update();
- // Vuselela isibali sikhathi
- var autorefresh = document.getElementById(“autorefresh”);
- uma (i-autorefresh && autorefresh.checked) {
- uma (i-timerID) {
- clearTimeout(timerID);
- }
- timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
- }
- }
Engeza imigqa yethebula
- Kumsebenzi we-addRows(), sisebenzisa ifomethi ye-JSON ukuze sigcwalise ipharamitha ngayinye emisiwe emhlabeni wonke kumugqa wethebula.
- Zonke izinkambu ze-HTML zifakwe kuhlu lwe-JSON (“imigqa_yethebula”) futhi i-syntax yenkambu yethebula ingezansi.
I-syntax:
imigqa_yethebula:[ , ,… ] : { , ,… }
: {“uhlobo”: , "imingcele":[ , ,…, ]}
- Kulokhu, umugqa ngamunye unezinkambu ezinhlanu: “I-ID Yesikhathi”, “Imodi”, “Uhlobo”, “I-VLAN ID” kanye “Nembobo ye-Reflector” Ngokwesibonelo.ample,
I-ID Yesikhathi (Inkambu yegama: int32_t) | 1 (I-id yesibuko) |
Imodi (Inkambu yegama: vtss_bool_t) | iqiniso (Okusho ukuthi isikhathi sesibuko sivuliwe) |
Uhlobo (Inkambu yegama: enumeration
{isibuko, rMirrorSource, rMirrorDestination} |
Umthombo we-RMirror (lona umthombo weseshini yesibuko esikude |
I-ID ye-VLAN (Inkambu yegama: uint16_t) | 200 (i-vlan esetshenziselwa ukwenza isibuko) |
I-Reflector Port (Inkambu yegama: vtss_ifindex_t) | Ngo-1/1 (Imbobo lapho kuthunyelwa khona ithrafikhi eyizibuko |
- I-myDynamicTable.addRows() izoguqula idatha ye-JSON ibe ifomethi ye-HTML futhi ikhiphe ithebula le-HTML.
- umsebenzi addRow(ukhiye, ival)
- {
- var none_map_val = 0xFFFFFFFF, none_map_text = “Lutho”, none_interface_text = “AKEKHO”;
- var tunnel_mode_suffix = val.TunnelMode == “useglobal” ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
- var row = {izinkambu:[
- {type:"link", params:[“cr”, “mirror.htm?session_id=” + key, key]},
- {type:"text", params:[oTMode[oVMode.indexOf(val.Mode)], "c"]},
- {type:"text", params:[oTType[oVType.indexOf(val.Type)], "c"]},
- {type:"text", params:[val.Type == "isibuko" ? "-":
val.RMirrorVlan, “c”]}, - {type:"text", params:[val.Type == "rMirrorSource" ?
val.ReflectorPort : “-” , “c”]} - ]};
- umugqa wokubuya;
- }
- umsebenzi addRows(recv_json)
- {
- var irowu, empty_colspan = 7;
- var table_rows = I-Array entsha();
- // Engeza unhlokweni wethebula
- addHeader(ithebula_imigqa);
- // Engeza umugqa owodwa
- Object.each(recv_json, function(irekhodi) {
- table_rows.push(addRow(record.key, record.val));
- });
- buyisela imigqa_yethebula;
- }
Web ikhasi losizo
Okwe web idizayini yekhasi losizo, incazelo yosizo ingabhekisela ekucacisweni kwe-JSON, ukuthi umbhalo wencazelo ungahambisana nokuphumayo kwe-JSON futhi usize ekunciphiseni izincazelo ezingasasebenzi. Example lapha ithathwe ekucushweni kokudluliselwa kwe-dhcp6.
Isixhumanisi se-hyper emthonjeni file
Yabela usizo file indawo emthonjeni wayo file I-HTML tag. Igama eliguquguqukayo elingaguquki elithi “help_page” lisetshenziselwa i web umsebenzi wekhasi losizo.
- // Umlingo wekhasi losizo
- var help_page = “/help/help_xxx.htm”;
Buyekeza incazelo yenkambu ye-HTML kusukela ekucacisweni kwe-JSON
- Sebenzisa noma I-HTML tag ukumemezela incazelo yethebula le-HTML futhi unikezwe i-ID ehlukile ye- tag.
- Uma idokhumenti ye-HTML isilungile, shayela i-loadXMLDoc() ukuze uthole konke ukucaciswa kwe-JSON noma uthole incazelo yendlela ethile ngegama lendlela ye-JSON ethi “jsonRpc.status.introspection.specific.inventory.get”.
- I-processTableDesc() isetshenziselwa ukubuyekeza incazelo yethebula kanye ne-processUpdate() isetshenziselwa ukubuyekeza incazelo yepharamitha yethebula.
- Ku-processUpdate(), shayela i-updateTableParamsDesc() ukuze ubuyekeze ama-elementi e-JSON afana namagama e-elementi ethile.
- Buyekeza i noma tag i-HTML yangaphakathi ngokwencazelo yesici.
- /* Buyekeza izinkambu zencazelo ye-HTML */
- umsebenzi processTableDesc(req) {
- uma (!req.responseText) {
- buyela;
- }
- var json_spec = JSON.decode(req.responseText);
- // Buyekeza incazelo yethebula
- $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
- }
- /* Buyekeza incazelo yepharamitha yethebula le-HTML */
- umsebenzi processUpdate(recv_json) {
- // Buyekeza incazelo yepharamitha yethebula
- var param_names = [
- {
- "alias": "Interface",
- “type”: “vtss_ifindex_t”,
- "name": "vlanInterface",
- "isijobelelo": "."
- },
- {
- "alias": "Relay Interface",
- “type”: “vtss_ifindex_t”,
- "name": "relayVlanInterface",
- “isijobelelo”: “. I-id yesixhumi esibonakalayo esisetshenziselwa ukudlulisa."
- },
- {
- "alias": "Relay Destination",
- “type”: “mesa_ipv6_t”,
- "igama": "relay_destination",
- “isijobelelo”: “. Ikheli le-IPv6 leseva ye-DHCPv6 isicelo esizodluliselwa kulo. Inani elizenzakalelayo 'ff05::1:3' liphatha 'noma iyiphi iseva ye-DHCP'.”
- }
- ];
- updateTableParamsDesc(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
- }
- /* Thola ukucaciswa kwe-JSON */
- window.addEvent('domready', function () {
- loadXMLDoc("/json_spec", processTableDesc);
- requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
- });
Isixhumanisi se-Hyper kubha yemenyu
- Ikhodi yomthombo we-HTML yebha yemenyu ikhiqizwa kusukela file webstax2\vtss_appl\web\ menu_default.cxx.
- Hlela izinto kulokhu file Okwe Web isixhumanisi sekhasi.
- #uma kuchaziwe(VTSS_SW_OPTION_DHCP6_RELAY)
- INTO(” Relay,dhcp6_relay.htm”);
- #endif //VTSS_SW_OPTION_DHCP6_RELAY
QAPHELA
Qaphela ukuthi inombolo yohlamvu lwesikhala kokuthi ITEM(“”), esetshenziselwa ukunquma izinga leqembu kubha yemenyu. Kulokhu, konke web amakhasi angaphansi kweqembu elithi “DHCPv6”.
Umfanekiso 6. Isbample lethebula elimisiwe lomhlaba jikelele
Isithasiselo
Okujwayelekile web amakhasi
Kukhona eziningana ejwayelekile web amakhasi angasetshenziselwa ukwakheka kwereferensi. Isib esisodwa esengeziweampOkuzoboniswa lapha ukucushwa kweseshini yesibuko esisodwa esitholakala ku-vtss_appl\mirror\html\mirror.htm.
I web ikhasi linikeza ukucushwa okuningiliziwe kweseshini yesibuko esisodwa. Wonke amapharamitha amisiwe asohlwini.
- Chofoza inkinobho ethi "Londoloza" ukuze usebenzise ukucushwa kwamanje.
- Chofoza inkinobho ethi "Setha kabusha" ukuze usethe kabusha ukucushwa kwamanje.
- Chofoza okuthi “Khansela” ukuze ubuyele emuvaview kwezikhathi zesibuko
Ukucushwa kwe-Mirror&RMirror
Izilungiselelo zomhlaba jikelele
Ukucushwa komthombo we-VLAN
Ukucushwa Kwembobo
Umfanekiso 7. Example yokucushwa okuningiliziwe kweseshini yesibuko
Izinkinobho "Gcina", "Setha kabusha" kanye "Khansela" zengezwa ngekhodi ye-html:
Ukugeleza komyalo we-JSON
Leli khasi lidinga ukugeleza komyalo wezinyathelo ezimbili:
- Okokuqala idinga ukuthola amakhono edivayisi ngendlela ethi “mirror.capabilities.get”. Amakhono awashintshi futhi kufanele afundwe kanye kuphela.
- Bese idinga ukuthola ukucushwa kwamanje kwedivayisi kusetshenziswa izindlela ze-“mirror.config.session.get”, “port.status.get” futhi uma kunqwabelaniswa okuthi “topo.config.stacking.get”.
Ucingo lwe-“mirror.capabilities.get” luqalwa umcimbi othi “domready” futhi umphumela uyalungiselelwa ukuthi uphathwe umsebenzi wokucelaUpdate.
I-applicationUpdate izoqala ucingo lwe-"mirror.config.session.get",
“port.status.get” futhi uma kunqwabelana okuthi “topo.config.stacking.get” futhi imiphumela yalezi zingcingo ilungiselelwa ukuthi isingathwe umsebenzi wokulungiselelaUpdate.
I-function preparationUpdate izoqoqa yonke imiphumela, futhi kuphela uma yonke seyamukelwe lapho izobiza khona umsebenzi processUpdate ezokwakha amathebula azoboniswa web.
Izithenjwa
- I-Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
- JSON https://www.json.org/
- I-MoonTools https://mootools.net/
Amadokhumenti / Izinsiza
![]() |
I-Microsemi AN1256 Web Isicelo sabahleli [pdf] Umhlahlandlela Womsebenzisi I-AN1256, AN1256 Web Isicelo sabahleli, Web Isicelo sabahleli, Isicelo |