JL-IDD-Z4綜合門禁控制器開發(fā)說明書2
JL-IDD-Z4綜合門禁控制器
開發(fā)說明書-通過HTTP協(xié)議交互
目錄
5.1.1.1 HTTP實(shí)時(shí)上報(bào)
5.1.1.1.1 HTTP刷卡實(shí)時(shí)上報(bào)
5.1.1.1.5 HTTP權(quán)限處理結(jié)果消息
5.1.1.1.6 HTTP取系統(tǒng)時(shí)間消息
1 文檔內(nèi)容簡(jiǎn)介
通過一個(gè)符合要求的HTTP/WEBSOCKET服務(wù)來控制設(shè)備。
控制器通過HTTP協(xié)議調(diào)用指定網(wǎng)頁服務(wù)器,網(wǎng)頁服務(wù)器按要求回復(fù)內(nèi)容控制設(shè)備工作。
1.1 特別情況說明
控制器使用一些特殊卡號(hào)
ü 小于255的卡號(hào)用于表示事件,因此系統(tǒng)中不能使用小于255的IC/ID卡
ü 卡號(hào)666666表示模擬刷卡,可以配置指定信號(hào)被觸發(fā)后,系統(tǒng)將此信號(hào)轉(zhuǎn)換成卡號(hào)為666666刷卡
ü 卡號(hào)7777777表示過閘超時(shí),用于實(shí)時(shí)上報(bào)表示刷卡后指定時(shí)間范圍內(nèi)沒有通過閘機(jī)(需要在信號(hào)配置中指定哪一路信號(hào)連接的過閘紅外檢測(cè)信號(hào))
ü 卡號(hào)111111111111111110表示所有身份證,使用此號(hào)授權(quán)后,所有身份證即可有此權(quán)限
2 API操作函數(shù)接口說明
詳細(xì)信息參考文檔《JL-IDD-Z4二次開發(fā)說明書-使用SDK開發(fā)包.doc》
3 框架內(nèi)置服務(wù)
詳細(xì)信息參考文檔《JL-IDD-Z4二次開發(fā)說明書-使用服務(wù)軟件.doc》
4 基于TCP/UDP協(xié)議交互
詳細(xì)信息參考文檔《JL-IDD-Z4二次開發(fā)說明書-通過TCP或UDP協(xié)議交互.doc》
5 基于HTTP/WEBSOCKET服務(wù)器交互
控制器支持通過HTTP或者WEBSOCKET通信來與服務(wù)器通信,從而實(shí)現(xiàn)使用局域網(wǎng)的網(wǎng)頁服務(wù)器或者WEBSOCKET服務(wù)器或者互聯(lián)網(wǎng)云上的服務(wù)器來管理設(shè)備。實(shí)現(xiàn)通過互聯(lián)網(wǎng)向設(shè)備授權(quán)或者在線驗(yàn)證。
開發(fā)范例可參考如下目錄
Php開發(fā)參考.php (重點(diǎn)關(guān)注processReq函數(shù))
更多開源代碼請(qǐng)聯(lián)系銷售人員
5.1 消息上報(bào)
1. 通過綜合門禁控制器配置工具,做如下配置操作:
ü 根據(jù)要使用的協(xié)議選擇配置控制器的通信方式,選擇TCP客戶端,并在“門禁配置”中啟動(dòng)選項(xiàng)38或者選項(xiàng)53。
ü 在TCP/UDP通信情況下,或者HTTP模式的長(zhǎng)連接情況下,可勾選“08.網(wǎng)絡(luò)連接檢測(cè)”,啟動(dòng)控制器心跳檢測(cè)功能。此時(shí)應(yīng)用可以接收控制板上報(bào)的連接檢測(cè)消息,來判斷設(shè)備是否在線。
ü 如果只接收同步消息,則關(guān)閉選項(xiàng)“05允許設(shè)備自動(dòng)主動(dòng)上報(bào)刷卡記錄”
ü 關(guān)閉選項(xiàng)“26.允許設(shè)備自動(dòng)從計(jì)算機(jī)拉取權(quán)限記錄”
ü 修改“電腦地址”為運(yùn)行軟件的地址,端口為軟件監(jiān)聽的服務(wù)端口,默認(rèn)為50000,通常需要將端口修改實(shí)際服務(wù)器端口,如80。
5.1.1 實(shí)時(shí)上報(bào)
5.1.1.1 HTTP實(shí)時(shí)上報(bào)
特定固件版本的控制器(或者v1486以后版本的固件通過配置“選項(xiàng)38-使用WEB服務(wù)器實(shí)時(shí)驗(yàn)證”,注意:只有打開此開關(guān)后本小節(jié)所述功能才會(huì)被啟用,建議控制器使用固定IP地址不要使用DHCP動(dòng)態(tài)分配)支持通過HTTP協(xié)議向指定IP和端口發(fā)送請(qǐng)求,請(qǐng)求URL格式為:
/dr/?d=0011631262|1|24884|7|2013-05-20 18:44:31|6|1|2|24884
控制器的這個(gè)上報(bào)請(qǐng)求和在瀏覽器地址欄輸入如下地址效果類似
http://ip:port/dr/?d=0011631262|1|24884|7|2013-05-20 18:44:31|6|1|2|24884
其中ip和port為網(wǎng)頁服務(wù)器的ip和端口
請(qǐng)求方式為GET,其中/dr/為請(qǐng)求的地址,參數(shù)d即是上報(bào)數(shù)據(jù)內(nèi)容,不同的上報(bào)有不同的數(shù)據(jù)內(nèi)容,詳細(xì)信息參考本小節(jié)下各種上報(bào)的詳細(xì)說明。
服務(wù)器可以返回特殊的文本來指示控制器做各種處理,具體參考后面的詳細(xì)說明。
上報(bào)內(nèi)容中的中文內(nèi)容默認(rèn)編碼為GBK。
注意:HTTP1.1默認(rèn)會(huì)保持長(zhǎng)連接,如果網(wǎng)頁服務(wù)器可以配置,請(qǐng)配置WEB服務(wù)器的TCP連接使用長(zhǎng)連接,以保持控制器和服務(wù)器間的連接可以長(zhǎng)期保持,否則在連接斷開及恢復(fù)期間可能出現(xiàn)丟包的現(xiàn)象,實(shí)時(shí)上報(bào)消息只上報(bào)一次上報(bào)失敗不會(huì)重傳(需要確保上傳成功請(qǐng)參考異步日志上報(bào))。對(duì)于不能保證長(zhǎng)連接的情況下,可嘗試啟動(dòng)選項(xiàng)44緩解此問題。
注意:對(duì)于上報(bào)請(qǐng)求不建議返回空消息或者異常狀態(tài)碼,因?yàn)榫W(wǎng)頁服務(wù)器可能因此自動(dòng)斷開與設(shè)備的長(zhǎng)連接。如果沒有需要返回的數(shù)據(jù),可以在返回消息中包含heartbeatAck=1。
網(wǎng)頁服務(wù)器的IP和端口由“綜合門禁控制器工具”的“電腦地址”和“端口”來指定,并且要求控制板通信模式設(shè)置為“TCP客戶端”(見下圖)。其子地址固定為/dr/不可更改,因此需要網(wǎng)頁服務(wù)器按此要求實(shí)現(xiàn),如創(chuàng)建一個(gè)dr子目錄,并在其下實(shí)現(xiàn)一個(gè)默認(rèn)頁面,此頁面可接收并處理d參數(shù),并返回包含特定指令的文本內(nèi)容。注意網(wǎng)頁服務(wù)器提供的請(qǐng)求地址內(nèi)部實(shí)現(xiàn)不能使用HTTP狀態(tài)碼(如301)來指示客戶端重定向跳轉(zhuǎn)到新的地址,控制器不是普通瀏覽器,暫不支持此功能。
如果網(wǎng)頁服務(wù)器的接口不能按本小節(jié)的要求實(shí)現(xiàn),或者對(duì)數(shù)據(jù)有更多要求(如要求接收完整的身份證信息),則可以使用3.2章節(jié)描述的方式,通過軟件轉(zhuǎn)發(fā)調(diào)用的方式來實(shí)現(xiàn)間接與HTTP服務(wù)器交互。
5.1.1.1.1 HTTP刷卡實(shí)時(shí)上報(bào)
刷卡實(shí)時(shí)上報(bào)在控制器上刷卡后立即上報(bào)給服務(wù)器,上報(bào)的數(shù)據(jù)詳細(xì)信息如下
/dr/?d=0011631262|1|24884|7|2013-05-20 18:44:31|6|1|2|24884
請(qǐng)求方式為GET,其中/dr/為請(qǐng)求的地址,參數(shù)d即是上報(bào)數(shù)據(jù)內(nèi)容,以|分隔的各字段值為
卡號(hào)或者條碼內(nèi)容|類型標(biāo)志1|控制器序號(hào)|控制器驗(yàn)證結(jié)果0表示控制器已經(jīng)直接開門其它表示錯(cuò)誤|刷卡時(shí)間|讀頭號(hào)|門號(hào)|方向1進(jìn)2出|設(shè)備名稱
ü 網(wǎng)頁服務(wù)器可以通過返回指定內(nèi)容來指示控制器開門。
open1=1000表示開啟1號(hào)繼電器1000毫秒
open1=0表示開啟1號(hào)繼電器,時(shí)長(zhǎng)由控制器繼電器的默認(rèn)配置決定
open4=500 表示開啟4號(hào)繼電器500毫秒
open2=100;open3=100; 表示同時(shí)開啟2號(hào)3號(hào)繼電器100毫秒
控制器會(huì)搜索網(wǎng)頁服務(wù)器返回的內(nèi)容,尋找形如open?=n的內(nèi)容(其中?為1-4,n為30-60000)作為開門指令進(jìn)行處理,為了減少控制器處理壓力,盡量減少不必要的返回?cái)?shù)據(jù)。
在有openN參數(shù)的情況下,可以使用timeN=X表示連續(xù)開繼電器N共X次,多次開關(guān)間的時(shí)間間隔可以用stopn=Y來控制(Y的單位為毫秒,沒有stopn時(shí)默認(rèn)使用200毫秒)。如
open1=1000;time1=5;stopn=500;
表示連續(xù)開繼電器5次,每次開1秒,間隔時(shí)間500毫秒),從而實(shí)現(xiàn)刷一次卡或者條碼連續(xù)進(jìn)多人的團(tuán)體票(此功能需要閘機(jī)設(shè)備支持計(jì)數(shù),即控制器開N次繼電器后,閘機(jī)能夠自動(dòng)放行N人)。
ü 如果控制板上外接了迪文DGUS顯示屏,則可以將網(wǎng)頁服務(wù)器返回的數(shù)據(jù)顯示到屏幕上,通過如下方式指定顯示內(nèi)容
prompt=以^分隔多行并以$結(jié)尾的文本
默認(rèn)同時(shí)在進(jìn)出顯示屏上顯示指定內(nèi)容,如果要指定顯示內(nèi)容的屏,可以通過
prompt-dir=?
其中1表示進(jìn)入的屏顯示指定內(nèi)容,2表示離開的屏顯示指定內(nèi)容,3表示進(jìn)出都顯示指定內(nèi)容,未指定則默認(rèn)為3。另外,以
prompt-page=?
指定顯示的頁面號(hào)(頁面號(hào)是迪文屏開發(fā)時(shí)設(shè)計(jì)的界面的編號(hào),不指定則默認(rèn)為1表示顯示刷身份證信息的頁面,注意顯示身份證信息的頁面中的姓名需要填UNICODE字符。0表示默認(rèn)頁面,2表示刷IC/條碼結(jié)果顯示的頁面)。以
restore-page=?
指定顯示超時(shí)后恢復(fù)到哪個(gè)顯示頁面號(hào),通常是默認(rèn)頁面0,。以
restore-seconds=?
指定顯示超時(shí)時(shí)間。
如restore-seconds=5& restore-page=0& prompt-page=2&prompt-dir=3&prompt=姓名1^性別2^卡號(hào)3^測(cè)試4^結(jié)果5^時(shí)間6^預(yù)留7^預(yù)留8$
表示在進(jìn)和出兩個(gè)屏上以頁面2為背景顯示數(shù)據(jù)并持續(xù)5秒,5秒后切換到頁面0
ü 如果控制板是語音板(JL-IDD-Z4S)則可以指定播放板載語音,通過
sound=?
指定要播放的語音的索引號(hào)(從1開始),可以通過
loop=?
指定要播放的次數(shù),如果不指定則默認(rèn)為1次
如 sound=1&loop=2 表示播放“刷卡成功”2次。(默認(rèn)序號(hào)1是刷卡成功)
ü 如果板上外接了TTS的語音芯片,則可以通過
tts=以$結(jié)束的文本
來指定TTS內(nèi)容,指定的內(nèi)容將被發(fā)送給語音芯片朗讀播放
如 tts=您好,歡迎光臨,今天是2016年3月25日$
ü 如果開門后應(yīng)用想要知道是否有人過閘,可以通過判斷過閘超時(shí)通知來實(shí)現(xiàn)。通過控制板的信號(hào)配置指定當(dāng)前通道人員通過后的反饋信號(hào),控制器在開門后指定時(shí)間內(nèi)沒有檢測(cè)到人員通過信號(hào),就會(huì)觸發(fā)“過閘超時(shí)”通知。此通知將被模擬為特殊卡號(hào)7777777的刷卡實(shí)時(shí)通知上報(bào)給HTTP服務(wù)器。
ü 網(wǎng)頁服務(wù)器返回控制文本給控制器后,默認(rèn)情況下控制器執(zhí)行完成操作后不會(huì)再給網(wǎng)頁服務(wù)器發(fā)送結(jié)果,如果需要控制器發(fā)送執(zhí)行結(jié)果,可以要返回內(nèi)容是加入
cmdseq=xxxx
其中xxxx為1- 2147483647間的任意數(shù)字,表示當(dāng)前消息的序號(hào),可以由網(wǎng)頁服務(wù)器任意指定。控制器收到的消息中如果包含此值,則控制器會(huì)在執(zhí)行操作后向服務(wù)器發(fā)送操作結(jié)果通知消息,操作結(jié)果通知消息中將包含與請(qǐng)求消息一致的消息序號(hào)。
更多指令參考《JL-IDD-Z4二次開發(fā)說明書-使用SDK開發(fā)包.doc》中的 “支持的文本指令集”小節(jié)。
5.1.1.1.2 HTTP連接檢測(cè)消息
啟用選項(xiàng)45后,控制器可以定時(shí)向服務(wù)器發(fā)送連接心跳檢測(cè)消息。連接檢測(cè)請(qǐng)求使用 .heartbeat.標(biāo)簽頭與普通刷卡區(qū)分,其后為連接檢測(cè)消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.heartbeat.控制器標(biāo)志|超時(shí)配置時(shí)間|超時(shí)余時(shí)|已超時(shí)次數(shù)|控制器名稱|控制器全局標(biāo)志|固件版本
服務(wù)端可以通過返回含heartbeatAck=1字樣的內(nèi)容來對(duì)連接檢測(cè)進(jìn)行確認(rèn),向設(shè)備確認(rèn)當(dāng)前的通信連接是正常的。返回消息也可以包含其它任何控制指令。
具體可參考上面的TCP/UDP的連接檢測(cè)消息說明
5.1.1.1.3 HTTP信號(hào)變化消息
啟用選項(xiàng)45后,控制器可以在信號(hào)變化時(shí)可以向服務(wù)器發(fā)送連接信號(hào)變化消息。信號(hào)變化通知消息使用.signal.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.signal.變化前信號(hào)總值: 變化后信號(hào)總值|控制器標(biāo)志|時(shí)間|信息配置1|信息配置2|信息配置3|信息配置4|信息配置5|信息配置6|信息配置7|信息配置8|設(shè)備名稱|對(duì)端通信地址
具體可參考上面的TCP/UDP的信號(hào)變化消息說明。返回任意控制指令,如果沒有需要返回的數(shù)據(jù),可以返回heartbeatAck=1。
5.1.1.1.4 HTTP權(quán)限拉取消息
啟用選項(xiàng)“26-允許設(shè)備自動(dòng)從計(jì)算機(jī)拉取權(quán)限記錄”后,控制器會(huì)定時(shí)向服務(wù)器發(fā)送權(quán)限拉取消息。權(quán)限拉取請(qǐng)求使用.getright.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.getright.設(shè)備全局標(biāo)志|設(shè)備標(biāo)志|設(shè)備名稱|操作批次號(hào)
服務(wù)器收到消息后,返回需要下發(fā)的權(quán)限數(shù)據(jù),如果沒有數(shù)據(jù)需要返回,忽略此消息。權(quán)限數(shù)據(jù)的格式參考“3.1.2權(quán)限同步”小節(jié)的說明。
注意:權(quán)限信息的返回不能與其它控制信息混在一起。服務(wù)器不能在其它請(qǐng)求消息中回應(yīng)權(quán)限信息?梢砸淮畏祷囟鄺l權(quán)限數(shù)據(jù),數(shù)據(jù)直接合并在一起即可,一次返回的權(quán)限數(shù)據(jù)總數(shù)不能超過8條,或者以實(shí)際測(cè)試能夠成功的數(shù)量為限。
5.1.1.1.5 HTTP權(quán)限處理結(jié)果消息
權(quán)限處理請(qǐng)求是拉取權(quán)限,服務(wù)器返回權(quán)限信息給控制器,控制器處理完成后發(fā)送通知給服務(wù)器。此通知使用.ackright.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.ackright.設(shè)備全局標(biāo)志|設(shè)備標(biāo)志|設(shè)備名稱||操作批次號(hào)|結(jié)果碼0表示成功
服務(wù)器收到消息后,才確認(rèn)消息成功下發(fā)到控制器,如果沒有收到此消息,則認(rèn)為權(quán)限沒有成功下發(fā),下次控制器使用權(quán)限拉取消息獲取權(quán)限信息時(shí),需要繼續(xù)返回未成功的權(quán)限信息。消息批次號(hào)與其對(duì)應(yīng)的權(quán)限拉取消息的批次號(hào)相同。
返回任意控制指令,如果沒有需要返回的數(shù)據(jù),可以返回heartbeatAck=1。
5.1.1.1.6 HTTP取系統(tǒng)時(shí)間消息
取時(shí)間使用.gettime.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.gettime.控制器當(dāng)前時(shí)間
如果控制器時(shí)間不需要調(diào)整,則忽略此消息,如果需要進(jìn)行調(diào)整,則服務(wù)器可以通過返回如settime=YYY-MM-DD HH:MI:SS WEEKDAY字樣的字符串(其中WEEKDAY為星期幾,星期日為0,星期一到星期六為1-6),對(duì)控制器時(shí)間進(jìn)行修改。比如
settime=2017-11-18 23:55:55 6
settime=2017-11-26 23:55:55 0
5.1.1.1.7 HTTP操作結(jié)果通知消息
如果服務(wù)器在返回給控制器的指示中使用cmdesq指定了消息序號(hào),則控制器在執(zhí)行命令后會(huì)向服務(wù)器發(fā)送操作結(jié)果通知消息。
操作結(jié)果通知使用.cmdret.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
GET /dr/?d=.cmdret.操作序號(hào)|success(0失敗1成功)|設(shè)備時(shí)間|設(shè)備標(biāo)志|設(shè)備名稱|設(shè)備全局標(biāo)志
返回任意控制指令,如果沒有需要返回的數(shù)據(jù),可以返回heartbeatAck=1。
5.1.1.1.8 其它HTTP消息
對(duì)于HTTP消息,約定請(qǐng)求參數(shù)以.XXXX.格式的內(nèi)容開頭(其中XXXX為任意小寫英文字母),則表示是維護(hù)類消息,需要進(jìn)行忽略或者特殊處理,以防止后面控制器添加新的消息時(shí),WEB服務(wù)器出現(xiàn)處理異常。
建議對(duì)于符合此格式的消息,除正常處理的消息外,其它消息默認(rèn)處理為返回heartbeatAck=1。
5.1.2 異步日志上報(bào)
5.1.2.1 HTTP異步日志上報(bào)
如果異步上報(bào)日志開關(guān)(選項(xiàng)05)打開,并且啟用了選項(xiàng)38和選項(xiàng)45,則控制器會(huì)使用HTTP協(xié)議上報(bào)控制器上的歷史日志。此上報(bào)使用.sendlog.標(biāo)簽頭與普通刷卡區(qū)分,其后為消息內(nèi)容。請(qǐng)求格式為:
n GET /dr/?d=.sendlog.日志序號(hào)|卡號(hào)|日志類型|設(shè)備標(biāo)志|日志結(jié)果|時(shí)間|讀頭號(hào)|門號(hào)|方向|設(shè)備名稱|日志類型|日志子類型|身份證芯片號(hào)|設(shè)備全局標(biāo)志|身份證信息base64編碼數(shù)據(jù)|身份證頭像base64編碼數(shù)據(jù)
服務(wù)器收到消息后,返回acklog=日志序號(hào) 確認(rèn)消息成功處理,控制器才會(huì)開始下一條日志的上報(bào),否則不停上報(bào)當(dāng)前記錄。
5.1.3 WEBSOCKET接口
Webscoket能夠保證連接為長(zhǎng)連接?刂破髦С峙cwebsocket服務(wù)器交互,啟動(dòng)控制器連接到websocket需要進(jìn)行如下配置:
n 配置控制器的區(qū)域服務(wù)器的ip地址和端口號(hào)為websocket的ip和端口
n 啟用選項(xiàng)53則開啟websocket相關(guān)功能。根據(jù)情況配置選項(xiàng)45,54,55。
啟用websocket接口后,設(shè)備會(huì)嘗試與區(qū)域服務(wù)器建立websocket連接。Websocket連接建立步驟如下:
n (Websocket規(guī)范)控制器向指定服務(wù)器發(fā)起請(qǐng)求建立HTTP連接
n (Websocket規(guī)范)服務(wù)器接收并建立連接
n (Websocket規(guī)范)控制器發(fā)送HTTP請(qǐng)求,要求切換協(xié)議
n (Websocket規(guī)范)服務(wù)器返回協(xié)議切換成功。此后的通信即以websocket協(xié)議交互。
n 成功切換協(xié)議后,控制器會(huì)發(fā)送一個(gè)“自我介紹”的消息包,格式如下:
device=00255|測(cè)試|1050195437276669|v1.1846-10|00001|20180620
各字段含義為 設(shè)備組號(hào)序號(hào)|設(shè)備名稱|設(shè)備全局序號(hào)|固件版本信息|設(shè)備短序號(hào)|出廠日期
服務(wù)器可以回應(yīng)heartbeatAck=1確認(rèn)這個(gè)消息
根據(jù)選項(xiàng)情況,設(shè)備會(huì)以websocket方式發(fā)送其它消息數(shù)據(jù)給服務(wù)器。
n 如果啟用了選項(xiàng)54,則刷卡時(shí)默認(rèn)會(huì)發(fā)送實(shí)時(shí)上報(bào)消息,除非啟用了選項(xiàng)07禁止。
n 如果啟用了選項(xiàng)45,并在打開選項(xiàng)08的情況下,會(huì)發(fā)送連接檢測(cè)信息
n 如果啟用了選項(xiàng)45,并在打開選項(xiàng)05的情況下,會(huì)上報(bào)控制器上的異步日志
n 發(fā)送信息變化等其它控制器消息
Websocket消息除了有websocket特有的消息頭外,消息內(nèi)容與HTTP消息相同(包含HTTP消息頭,使用 GET方式請(qǐng)求)。如:
GET /dr/?d=0135635499|1|00255|4|2018-05-31%2016:09:48|5|1|1|%B2%E2%CA%D4
HTTP/1.1
Host: 192.168.0.99
服務(wù)程序可以拆分字符串獲取參數(shù)后進(jìn)行處理。和處理HTTP請(qǐng)求一樣,可以直接返回包含操作指示的字符串來指示控制器執(zhí)行指定操作。如,返回open1=300表示開繼電器1共300毫秒。
5.1.4 HTTP連接超時(shí)問題
對(duì)于服務(wù)器與控制器使用TCP或者HTTP協(xié)議交互的情況,為了判斷控制器與服務(wù)器間的連接狀況,控制器(v1868后的版本,不含v1868)可啟用了TCP內(nèi)置的Keep-alive機(jī)制(默認(rèn)啟用或者配置選項(xiàng)57啟用),在連接成功建立并進(jìn)行過一次收發(fā)數(shù)據(jù)后,控制器的網(wǎng)絡(luò)芯片會(huì)在最后一次數(shù)據(jù)交互后的120秒(由配置的設(shè)備網(wǎng)絡(luò)超時(shí)秒數(shù)決定,最大支持255*5=1275秒)后,發(fā)送Keep-alive包,對(duì)端服務(wù)在線則會(huì)自動(dòng)回應(yīng)ACK包(tcp內(nèi)部自動(dòng)實(shí)現(xiàn)不需要編寫代碼),控制器網(wǎng)絡(luò)芯片會(huì)自動(dòng)檢測(cè)對(duì)端是否有回應(yīng)包來判斷網(wǎng)絡(luò)連接是否正常。如果檢測(cè)到網(wǎng)絡(luò)連接異常,控制器會(huì)斷開當(dāng)前連接并嘗試重連。超時(shí)時(shí)長(zhǎng)配置值小于NAT的tcp連接超時(shí)時(shí)間時(shí),啟用此開關(guān)可用于防止NAT設(shè)備在連接未活動(dòng)時(shí)主動(dòng)清除連接信息。
n 對(duì)于一般TCP服務(wù)器,建議實(shí)現(xiàn)為長(zhǎng)連接,并且在服務(wù)器scoket上啟用TCP協(xié)議內(nèi)置的Keep-Alive處理,從而實(shí)現(xiàn):
u 防止網(wǎng)絡(luò)中的NAT設(shè)備要連接沒有活動(dòng)時(shí)斷開連接
u 防止異常斷開的客戶端占用服務(wù)器側(cè)的端口
u 同時(shí)避免客戶端端口重用后不能連接到服務(wù)器(服務(wù)器不知道客戶端已經(jīng)斷開,認(rèn)為當(dāng)前已經(jīng)存在與客戶端指定端口的連接,這種情況下可能連接不上,或者連接上以后服務(wù)器主動(dòng)斷開連接,需要等待、或者客戶端換其它端口連接、或者重新啟動(dòng)服務(wù)器才能正常連接)。v1883后的控制器會(huì)嘗試以隨機(jī)端口來連接服務(wù)器以規(guī)避此問題。
n 對(duì)于WEB服務(wù)器(常用的都是HTTP1.1,默認(rèn)都是長(zhǎng)連接,但服務(wù)器在指定時(shí)間內(nèi)未收到請(qǐng)求數(shù)據(jù)則會(huì)自動(dòng)斷開連接),因此建議配置連接超時(shí)時(shí)間為120-3600秒,同時(shí)在控制器上啟用“選項(xiàng)08.網(wǎng)絡(luò)連接檢測(cè)”,此選項(xiàng)啟用后,控制器會(huì)定時(shí)發(fā)送HTTP的連接檢測(cè)消息到服務(wù)器,在發(fā)送間隔小于服務(wù)器連接超時(shí)時(shí)間的情況下(同時(shí)也小于網(wǎng)絡(luò)中所有NAT超時(shí)時(shí)間時(shí)),即可長(zhǎng)期保持連接。控制器修改“網(wǎng)絡(luò)連接檢測(cè)發(fā)送時(shí)間間隔”的步驟如下:
ü 配置工具中點(diǎn)擊“配置選項(xiàng)”,修改“網(wǎng)絡(luò)”-“設(shè)備網(wǎng)絡(luò)超時(shí)秒數(shù)”
ü 選擇控制器后,點(diǎn)“保存配置”,新的配置值即會(huì)下發(fā)到控制器。
n 對(duì)于服務(wù)壓力比較大的服務(wù)器,連接超時(shí)時(shí)間過大將影響性能,此時(shí)建議使用單獨(dú)的websocket長(zhǎng)連接來處理與控制器的數(shù)據(jù)交互。
n 常見WEB服務(wù)器連接超時(shí)時(shí)間配置方法
IIS配置:
網(wǎng)站-高級(jí)設(shè)置
修改httpd.conf文件
1. KeepAlive On
2. MaxKeepAliveRequests 300
重新啟動(dòng)
apachectl -k graceful
nginx本身僅支持一個(gè)keepalive_timeout 指令,其使用0值來停用keep-alive。
在http、server、location指令中添加指令
1. location /cqjt/ {
2. alias /url/var/www/html/;
3. keepalive_timeout 75;
4. expires 5m;
5. }
6 附表
詳細(xì)信息參考文檔《JL-IDD-Z4二次開發(fā)說明書.doc》



