Basic HTTP Push Relay Protocol

本文深入解析HTTP推协议,重点介绍其设计初衷、关键术语、服务器与客户端操作,以及不同场景下的操作流程。涵盖发布与订阅机制、信道管理、信道标识符的生成,以及服务器的响应策略,包括长时间轮询、间隔轮询等机制,旨在为开发者提供全面理解并高效应用HTTP推协议的指南。

英文原方:

https://pushmodule.slact.net/protocol.html


简单的HTTP推协议
1 介绍
   1.1目的   
   本协议的初衷是提供一种HTTP客户端透明长连接的支持,在服务端连接大部分时间都是空闲的,也不会被中继传递。   
 
   1.2 一般性的说明    
   略  

   1.3 术语
   本规范使用一系列的名词来指代协议中的碰到的对象。
    服务器(server)
         实现本协议的HTTP服务器。
    客户端(client)
        一个可以向HTTP服务器发起TCP/IP连接的程序。
      消息(message)
        特定应用的数据,通常包含在请求或者回复的主体中。
    信道(channel)
        代表某个传递消息的路径资源。每个信道有单独的消息队列。
     订阅者(subscriber)
        一个向服务器发出HTTP请求,希望在某个信道上接受消息的客户端。
    发布者(publisher)
        一个向服务器发出HTTP请求,希望将其信息通过信道发送到订阅者那里。
     信道标示(channel id)
        可以标示信道的一串特别的字符串。
    位置(location)
        服务器的一个URL。

2.需求
   2.1 服务器端的要求
    HTTP服务器必须可以通过URL来设定发布和订阅的位置。所有发到发布位置的请求都必须被认为是发布者的请求。所有发到订阅位置的请求都被认为是订阅者 的请求。
    服务器必须可以通过特定的字符来识别不同的信道。比如,可以是URL的一个参数(/foo/?id=123)或者是一个cookie。当然你也可以用其他 方法来区别信道,但是强烈不建议你这么做。
    服务器必须接收发到发布位置的请求并迅速回复。当然也必须接收发到订阅位置的请求,但不必马上回复。

   2.2 客户端的要求
    所有客户端必须产生有效的HTTP请求。订阅客户端(比如浏览器)必须有应对Last-Modified和Etag的缓存机制。  

   2.3 信道标示  
    服务端不负责产生信道,而应由客户端来产生。

3. 服务器的操作
   发布者的请求就像一个通知,通过某个信道把消息发到订阅者那里。订阅者的请求就是告知服务器客户端已经准备好接受消息了。
   3.1 订阅者     
    服务器必须接收所有发到发布位置的的HTTP GET请求。其他方法的HTTP请求应该回应405状态(Method Not Allowed)。
    订阅者的请求被认为是打算订阅消息的告知。订阅者可以请求已经存在、已经无效或者还没有有效的请求。订阅者通过If-Modified-Since和If -None-Match来区别这些消息。如果客户端没有If-Modified-Since头,则必须被认为假定他请求的是信道里最老的那条消息。每一个 200(OK)的回复消息必须包含有Last-Modified和Etag头,以便订阅者可以通过这些头来获取下一条消息。此外,200(ok)也必须包 含消息发布者的Content-Type头,除非发布者没有指定Content-Type或者服务器的配置刻意想隐藏Content-Type。
   
    HTTP服务器一般有多种推的机制。服务器针对订阅者的请求回应的行为应该是可配置的,而且必须是以下列出的机制:            
        长时间轮询(Long-Polling)
        针对已经存在的消息将迅速的回应;如果是还未有效的请求必须延迟直到消息变成有效。延迟的回复必须满足下面所有的条件:
        + 在消息有效时,包含消息及Content-Type的200(ok)回复必须立即发出。这个回复应该与那些马上回复的消息没有区别。
        + 如果订阅者等待的信道被删除了或者因为某种原因变得无效时,服务器端必须马上发出一个410(gone)的回复。
        + 如果另外一个订阅者的请求与该请求有冲突。服务器必须马上回应409(Conflict)。
        间隔轮询(Interval-Polling)
        所有的请求必须马上回应,如果还没有有效消息,服务器必须马上回应304(Not Modified)。
   
   另外,当服务器在同一个信道上接受了超过一个订阅者时,它必须有如下行为:
   广播(Broadcast)
        没有另外的行为。
    后进先出(Last-in, first-out)
        除了最近等待的那个订阅者,给其他的订阅者回应409(Conflict)。
    先进后出(First-in, last-out)
        除了等待最久的那个订阅者,给其他的订阅者回应409(Conflict)。
    
    服务器必须是可以配置这些行为的,而且默认是广播的。        

  3.2 发布者   
    服务器必须接受所有发到发布位置的有效的HTTP请求。针对发布者请求的不同服务器必须满足以下条件:
    * GET 请求:如果存在该信道机就回复200(OK),否则回复404(Not Found )。
    * PUT 请求:直接回复200(OK),如果该信道不存在就根据信道标示建立一个。
    * DELETE 请求:如果信道存在,回复200(OK)并删除该信道。该信道的所有订阅者会收到410(Gone)的回复。如果不存在,回复404(Not Found)。
    * POST请求是用来发送消息的。消息包含于请求的主体中,可以以任何一种编码通过信道发送。消息必须马上发送到那些长期等候的那些订阅者那里。另外,消息 可以保存下来,以便将来之用。最老的消息也可以被删除。对于POST请求,如果有向订阅者发出这个消息,服务器必须回应201(Created)。如果没 有,就回应202(Accepted)。Content-Type头必须跟随消息一起被转发。
    消息的保存极限参数应该是可配置的。发布者的位置应该可以配置的。所有给发布者200的回复必须包含该应用的信道信息。这些信息可能包含保存的消息数量和 长期等待的订阅者数量。针对这些信息,服务器或许可以实现某种协商。

ibintl-full/include -DEXIT_WITHOUT_RECYCLING_RESOURCES -DESP32_SUPPORT -DT23x_MMC_INSMOD_MANUAL -DFACTORY_MODE_NOT_AMS -I/home/linzihao/Code/onvif1/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/include -I/home/linzihao/Code/onvif1/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c200v5/include -I/home/linzihao/Code/onvif1/NVMP/nvmp/../sdk/soc/T23/toolchain/mips-gcc540-glibc222-64bit-r3.3.0.smaller/mips-linux-gnu/libc/uclibc/usr/include -I/home/linzihao/Code/onvif1/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib/libiconv-full/include -I/home/linzihao/Code/onvif1/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib/libintl-full/include -Wall -Werror -ffunction-sections -fdata-sections -c -o main.o main.c mips-linux-uclibc-gnu-gcc build_dir/target-mips-openwrt-linux-uclibc-c200v5/main/main.o "mips-linux-uclibc-gnu-gcc -o main main.o libraries/mpp/isp_data_model/image_profile_model.o libraries/mpp/isp_data_model/isp_data_model.o libraries/mpp/isp_data_model/audio_profile_model.o libraries/mpp/fv_focus_test/fv_focus_test.o libraries/mpp/fv_focus_test/fv_data_model.o libraries/avts/hub_storage/hub_storage.o libraries/avts/hub_storage/hub_storage_debug.o libraries/avts/rtspd/session.o libraries/avts/rtspd/rtspd.o libraries/avts/avts/shmem.o libraries/avts/avts/storage.o libraries/avts/avts/partition_ops.o libraries/avts/avts/event_index_block.o libraries/avts/avts/ring_object.o libraries/avts/avts/mp4_mux.o libraries/avts/avts/playback.o libraries/avts/avts/playback_thread.o libraries/avts/avts/stg_event.o libraries/avts/avts/disk.o libraries/avts/avts/entry_cache.o libraries/avts/avts/stg_disk.o libraries/avts/avts/subscriber_manage.o libraries/avts/avts/event_table.o libraries/avts/avts/snapshot_index.o libraries/avts/avts/msg_push.o libraries/avts/avts/ds.o libraries/avts/avts/avdm.o libraries/avts/avts/sd_snapshot.o libraries/avts/avts/mp4_demux.o libraries/avts/avts/stg_utils.o libraries/avts/avts/playback_event.o libraries/avts/avts/sys_info.o libraries/avts/avts/utils.o libraries/avts/avts/file_ops.o libraries/avts/avts/record.o libraries/avts/avts/crossline.o libraries/avts/avts/stg_api.o libraries/avts/avts/mp4_handler.o libraries/avts/avts/avts_cmd.o libraries/avts/avts/disk_list.o libraries/avts/avts/common_api.o libraries/avts/avts/hd_manage.o libraries/avts/avts/stg_dbg.o libraries/avts/avts/index_memory.o libraries/avts/avts/file.o libraries/avts/avts/face_enhance.o libraries/avts/avts/storage_data_model.o libraries/avts/avts/index_binary.o libraries/avts/avts/signal_handler.o libraries/avts/avts/disk_exception.o libraries/avts/avts/reupload_index.o libraries/avts/avts/tp_disk_format.o libraries/avts/avts/mp4_tpwfile.o libraries/avts/avts/index_file_ops.o libraries/avts/avts/data_partition.o libraries/avts/avts/interface.o libraries/avts/avts/avts.o libraries/avts/avts/event.o libraries/avts/avts/calendar.o libraries/avts/avts/binary_index_file.o libraries/avts/avts/read_helper.o libraries/avts/avts/playback_client.o libraries/avts/p2p/stun.o libraries/avts/p2p/fp_ttl_probe.o libraries/avts/p2p/session.o libraries/avts/p2p/video_share.o libraries/avts/p2p/get_nat.o libraries/avts/p2p/utils.o libraries/avts/p2p/p2pd.o libraries/avts/p2p/p2p_nat8.o libraries/avts/p2p/fp_ttl.o libraries/avts/p2p/epoll_event.o libraries/avts/http_server/httpserversession.o libraries/avts/http_server/http_p2p.o libraries/avts/http_server/httpserver.o libraries/avts/http_server/http_data_model.o libraries/avts/http_server/flow_ctr.o libraries/avts/http_server/tspackage.o libraries/avts/http_server/client_info.o libraries/avts/http_server/tsunpack.o libraries/avts/http_server/tsdemux.o libraries/avts/http_server/httpcommon.o libraries/avts/http_server/es_mp3_to_ts.o libraries/avts/http_server/ts_pack.o libraries/avts/http_server/stream_transmit.o libraries/avts/http_server/libtspack.o libraries/avts/http_server/http_server_module.o libraries/avts/tapo_care/media.o libraries/avts/tapo_care/tapo_care_debug.o libraries/avts/tapo_care/cloud_token.o libraries/avts/tapo_care/tapo_care.o libraries/avts/tapo_care/reupload.o libraries/avts/tapo_care/http_common.o libraries/avts/relay/session.o libraries/avts/relay/relay.o libraries/avts/relay/cookie.o libraries/avts/relay/http_relay.o libraries/avts/rtsp_server/TPFECCodec.o libraries/avts/rtsp_server/rtspcommon.o libraries/avts/rtsp_server/tpudpserver.o libraries/avts/rtsp_server/client_info.o libraries/avts/rtsp_server/data_src.o libraries/avts/rtsp_server/rtspserver.o libraries/avts/rtsp_server/RS_fec.o libraries/avts/rtsp_server/rtpcommon.o libraries/avts/rtsp_server/rtp4server.o libraries/avts/rtsp_server/rtspserversession.o libraries/avts/rtsp_server/rtsp_server_module.o libraries/avts/rtsp_server/rtsp_data_model.o libraries/avts/rtsp_server/authmanager.o libraries/avts/rtsp_server/srtp_session.o libraries/avts/rtsp_server/rtspdsocket_client.o libraries/avts/rtsp_server/rtppackage.o libraries/avts/rtsp_server/sdp4server.o libraries/avts/rtsp_server/authentication.o libraries/avts/rtsp_server/networkutil.o libraries/avts/rtsp_server/srtp.o libraries/cap/video/video_data_model.o libraries/cap/video/roi_data_model.o libraries/cap/record_plan/record_plan_ds.o libraries/cap/record_plan/record_plan.o libraries/cap/detection_region/dr.o libraries/cap/detection_region/dr_data_model.o libraries/cap/hsr/hsr.o libraries/cap/cap/cap.o libraries/cap/md_alarm/md_alarm.o libraries/cap/md_alarm/md_pir.o libraries/cap/osd/osd_data_model.o libraries/cap/osd/osd.o libraries/cap/osd/tpcam_osd_control.o libraries/cap/sd_card/sd_card.o libraries/cap/bcd_alarm/bcd_alarm.o libraries/cap/ptz/limit.o libraries/cap/ptz/home.o libraries/cap/ptz/ubus.o libraries/cap/ptz/module.o libraries/cap/ptz/params_init.o libraries/cap/ptz/tp_ptz.o libraries/cap/ptz/tour.o libraries/cap/ptz/ds_target_track.o libraries/cap/ptz/ptz.o libraries/cap/ptz/ds_tour.o libraries/cap/ptz/patrol.o libraries/cap/ptz/debug.o libraries/cap/ptz/ds_patrol.o libraries/cap/ptz/target_track.o libraries/cap/ptz/ds_lens_mask.o libraries/cap/ptz/preset.o libraries/cap/ptz/callback.o libraries/cap/ptz/ds_park.o libraries/cap/ptz/utils.o libraries/cap/ptz/ds_preset.o libraries/cap/ptz/basic.o libraries/cap/ptz/plan.o libraries/cap/ptz/ds_scan.o libraries/cap/ptz/ptz_data_model.o libraries/cap/ptz/scan.o libraries/cap/ptz/ds_basic.o libraries/cap/ptz/ds_home.o libraries/cap/ptz/entry.o libraries/cap/ptz/ds_plan.o libraries/cap/ptz/park.o libraries/cap/ptz/lens_mask.o libraries/cap/ptz/uci_image_flip.o libraries/cap/ptz/ds_limit.o libraries/cap/ptz/coor_transform.o libraries/cap/led_rule/led_rule.o libraries/cap/led_rule/led.o libraries/cap/od_alarm/od_alarm.o libraries/cap/msg_alarm/msg_alarm.o libraries/cap/msg_alarm/light_control.o libraries/cap/msg_alarm/usr_def_audio.o libraries/cap/cover/cover_data_model.o libraries/cap/cover/cover.o libraries/cap/image/image_cmd.o libraries/cap/image/image_data_model.o libraries/cap/image/image_utils.o libraries/cap/image/image.o libraries/cap/detection_common/detection_common.o libraries/cap/speaker/audio_stream.o libraries/cap/speaker/speaker_data_model.o libraries/cap/speaker/speaker.o libraries/cap/speaker/language_data_model.o libraries/cap/dn_switch/dn_switch.o libraries/cap/dn_switch/dn_switch_buff.o libraries/cap/dn_switch/dn_switch_cmd.o libraries/cap/dn_switch/dn_switch_process.o libraries/nsd/openapi/fast_openapi_cloud.o libraries/nsd/openapi/fast_openapi_motion_detection.o libraries/nsd/openapi/fast_openapi_alert.o libraries/nsd/openapi/fast_openapi_sd_card.o libraries/nsd/openapi/fast_openapi_system.o libraries/nsd/openapi/fast_openapi.o libraries/nsd/openapi/fast_openapi_ptz.o libraries/nsd/openapi/fast_openapi_playback.o libraries/nsd/openapi/fast_openapi_msg_push.o libraries/nsd/openapi/fast_openapi_audio.o libraries/nsd/openapi/openapi_https_server.o libraries/nsd/openapi/fast_openapi_date_time.o libraries/nsd/openapi/openapi.o libraries/nsd/openapi/openapi_data_model.o libraries/nsd/openapi/fast_openapi_wireless.o libraries/nsd/openapi/fast_openapi_account.o libraries/nsd/openapi/fast_openapi_privacy_mode.o libraries/nsd/openapi/fast_openapi_record.o libraries/nsd/openapi/fast_openapi_dayNight_mode.o libraries/nsd/openapi/fast_openapi_video.o libraries/nsd/sntpc/sntpc.o libraries/nsd/hub_manage/hub_manage.o libraries/nsd/hub_manage/hub_manage_data_model.o libraries/nsd/hub_manage/hub_manage_http_client.o libraries/nsd/hub_manage/hub_manage_login.o libraries/nsd/hub_manage/hub_manage_request_handle.o libraries/nsd/hub_manage/ai_enhance.o libraries/nsd/hub_manage/hub_man_debug.o libraries/nsd/wirelesstool/wirelesstool_business.o libraries/nsd/wirelesstool/wirelesstool_config.o libraries/nsd/tdp_common/tdp_common.o libraries/nsd/httpd/http_auth.o libraries/nsd/httpd/data_model.o libraries/nsd/httpd/http_login_err.o libraries/nsd/httpd/httpd.o libraries/nsd/httpd/http_parser.o libraries/nsd/httpd/http_special_request.o libraries/nsd/httpd/http_log.o libraries/nsd/httpd/media_encrypt.o libraries/nsd/httpd/http_utils.o libraries/nsd/tdpd/tp_tlv.o libraries/nsd/tdpd/tdpd.o libraries/nsd/dhcps/dhcps.o libraries/nsd/cloud_iot/cloud_iot_data_model.o libraries/nsd/cloud_iot/cvm_get_ca.o libraries/nsd/cloud_iot/log_upload.o libraries/nsd/cloud_iot/download_thread.o libraries/nsd/cloud_iot/base64.o libraries/nsd/cloud_iot/device_telemetry.o libraries/nsd/cloud_iot/usr_request.o libraries/nsd/cloud_iot/dst.o libraries/nsd/cloud_iot/openapi_bind.o libraries/nsd/cloud_iot/cloud_iot_config.o libraries/nsd/cloud_iot/mqtt_client.o libraries/nsd/cloud_iot/json-api.o libraries/nsd/cloud_iot/cloud_iot_common.o libraries/nsd/cloud_iot/cloud_iot_ipc.o libraries/nsd/cloud_iot/cloud_iot.o libraries/nsd/cloud_iot/mqtt_packet.o libraries/nsd/cloud_iot/error_handler.o libraries/nsd/cloud_iot/msgPush.o libraries/nsd/cloud_iot/http_client.o libraries/nsd/cloud_iot/iot_encrypt.o libraries/nsd/cloud_iot/http_common.o libraries/nsd/cloud_iot/device_token.o libraries/nsd/mactool/mactool_cmd.o libraries/nsd/mactool/mactool_flash.o libraries/nsd/mactool/mactool_business.o libraries/nsd/nsd/nsd.o libraries/nsd/onvif/data_model.o libraries/nsd/onvif/tan_passthrough.o libraries/nsd/onvif/tptz_passthrough.o libraries/nsd/onvif/soap_common.o libraries/nsd/onvif/soap_parse.o libraries/nsd/onvif/soap_tptz.o libraries/nsd/onvif/md_active_cells.o libraries/nsd/onvif/soap_auth.o libraries/nsd/onvif/onvif_srv.o libraries/nsd/onvif/soap_tev.o libraries/nsd/onvif/onvif.o libraries/nsd/onvif/soap_event.o libraries/nsd/onvif/soap_pack.o libraries/nsd/onvif/soap_tr2.o libraries/nsd/onvif/soap_timg.o libraries/nsd/onvif/onvif_passthrough.o libraries/nsd/onvif/onvif_common.o libraries/nsd/onvif/soap_trt.o libraries/nsd/onvif/soap_tds.o libraries/nsd/onvif/tr2_passthrough.o libraries/nsd/onvif/imaging.o libraries/nsd/onvif/tds_passthrough.o libraries/nsd/onvif/soap_tan.o libraries/nsd/onvif/soap.o libraries/nsd/onvif/soap_wsdd.o libraries/nsd/onvif/packbits.o libraries/nsd/onvif/onvif_discv.o libraries/nsd/onvif/soap_global.o libraries/nsd/onvif/trt_passthrough.o libraries/nsd/nifc/stc_ip.o libraries/nsd/nifc/system.o libraries/nsd/nifc/nifc_data_model.o libraries/nsd/nifc/nifc.o libraries/nsd/nifc/cmd.o libraries/nsd/nifc/dhcpc.o libraries/nsd/system/system.o libraries/nsd/system/timing_reboot_data_model.o libraries/nsd/system/auto_upgrade_data_model.o libraries/nsd/system/app_component_data_model.o libraries/nsd/system/recover_man.o libraries/nsd/system/sysprepare.o libraries/nsd/system/sys_reset.o libraries/nsd/ffs/ffs_dss_operation_compute_configuration_data.o libraries/nsd/ffs/ffs_dss_operation_post_wifi_scan_data.o libraries/nsd/ffs/ffs_dss_wifi_security_protocol.o libraries/nsd/ffs/ffs_ubus_api.o libraries/nsd/ffs/ffs_convert_registration_state.o libraries/nsd/ffs/ffs_wifi_context.o libraries/nsd/ffs/ffs_linked_list.o libraries/nsd/ffs/ffs_dss_wifi_connection_state.o libraries/nsd/ffs/ffs_convert_json_value.o libraries/nsd/ffs/ffs_dss_operation_start_pin_based_setup.o libraries/nsd/ffs/ffs_dss_wifi_connection_attempt.o libraries/nsd/ffs/ffs_dss_wifi_connection_details.o libraries/nsd/ffs/ffs_dss_device_details.o libraries/nsd/ffs/ffs_wifi_provisionee_setup_network.o libraries/nsd/ffs/ffs_convert_registration_details.o libraries/nsd/ffs/ffs_wifi_provisionee_task.o libraries/nsd/ffs/ffs_convert_device_details.o libraries/nsd/ffs/ffs_dss_start_provisioning_session_request.o libraries/nsd/ffs/ffs_convert_wifi_credentials.o libraries/nsd/ffs/ffs_linux_main.o libraries/nsd/ffs/ffs_linux_crypto_common.o libraries/nsd/ffs/ffs_dss_operation_start_provisioning_session.o libraries/nsd/ffs/ffs_dss_start_pin_based_setup_request.o libraries/nsd/ffs/ffs_raspbian_wpa_supplicant.o libraries/nsd/ffs/ffs_dss_start_pin_based_setup_response.o libraries/nsd/ffs/ffs_linux_http_client.o libraries/nsd/ffs/ffs_linux_logging.o libraries/nsd/ffs/ffs_iso8601.o libraries/nsd/ffs/ffs_dss_client.o libraries/nsd/ffs/ffs_shell.o libraries/nsd/ffs/ffs_raspbian_iwlist.o libraries/nsd/ffs/ffs_linux_wifi.o libraries/nsd/ffs/ffs_dss_configuration.o libraries/nsd/ffs/ffs_base64.o libraries/nsd/ffs/ffs_dss_post_wifi_scan_data_response.o libraries/nsd/ffs/ffs_dss_report_request.o libraries/nsd/ffs/ffs_wifi_scan_list.o libraries/nsd/ffs/ffs_wifi.o libraries/nsd/ffs/ffs_wifi_provisionee_encoded_setup_network.o libraries/nsd/ffs/ffs_dss_wifi_credentials.o libraries/nsd/ffs/ffs_base85.o libraries/nsd/ffs/ffs_dss_error_details.o libraries/nsd/ffs/ffs_wifi_manager.o libraries/nsd/ffs/ffs_dss_wifi_scan_result.o libraries/nsd/ffs/ffs_dss_get_wifi_credentials_request.o libraries/nsd/ffs/ffs_dss_report_response.o libraries/nsd/ffs/ffs_dss_compute_configuration_data_response.o libraries/nsd/ffs/ffs_linux_crypto.o libraries/nsd/ffs/ffs_dss_wifi_provisionee_state.o libraries/nsd/ffs/ffs_dss_compute_configuration_data_request.o libraries/nsd/ffs/ffs_dss_operation_report.o libraries/nsd/ffs/ffs_data_model.o libraries/nsd/ffs/ffs_convert_wifi_provisionee_state.o libraries/nsd/ffs/ffs_convert_wifi_scan_result.o libraries/nsd/ffs/ffs_wifi_connection_attempt_list.o libraries/nsd/ffs/ffs_wifi_provisionee_state.o libraries/nsd/ffs/ffs_wifi_provisionee_user_network.o libraries/nsd/ffs/ffs_wifi_configuration_list.o libraries/nsd/ffs/ffs_convert_wifi_connection_attempt.o libraries/nsd/ffs/ffs_result.o libraries/nsd/ffs/ffs_convert_wifi_connection_details.o libraries/nsd/ffs/ffs_dss_registration_state.o libraries/nsd/ffs/ffs_dss_start_provisioning_session_response.o libraries/nsd/ffs/ffs_dss_post_wifi_scan_data_request.o libraries/nsd/ffs/ffs_dss_get_wifi_credentials_response.o libraries/nsd/ffs/ffs_circular_buffer.o libraries/nsd/ffs/ffs_convert_wifi_security_protocol.o libraries/nsd/ffs/ffs_linux_configuration_map.o libraries/nsd/ffs/ffs_dss_operation_get_wifi_credentials.o libraries/nsd/ffs/ffs_raspbian_wireless_tools.o libraries/nsd/ffs/ffs_cloud_bind.o libraries/nsd/ffs/ffs_linux_error_details.o libraries/nsd/ffs/ffs_convert_wifi_connection_state.o libraries/nsd/ffs/ffs_dss_report_result.o libraries/nsd/ffs/ffs_logging.o libraries/nsd/ffs/ffs_cloud_token.o libraries/nsd/ffs/ffs_json.o libraries/nsd/ffs/ffs_raspbian_wifi_manager.o libraries/nsd/ffs/ffs_dss_registration_details.o libraries/nsd/ffs/ffs_stream.o libraries/nsd/ffs/ffs_linux_user_context.o libraries/nsd/ffs/ffs_hex.o libraries/nsd/ffs/ffs_configuration_map.o libraries/nsd/miniupnpc/upnpc_cmd.o libraries/nsd/miniupnpc/upnpc_web.o libraries/nsd/miniupnpc/upnpc_data_model.o libraries/nsd/miniupnpc/port_mapping.o libraries/nsd/dhcpc/dhcpc.o libraries/nsd/dhcp_common/packet.o libraries/nsd/dhcp_common/options.o libraries/nsd/upgrade/rsaVerify.o libraries/nsd/upgrade/sd_backup.o libraries/nsd/upgrade/sd.o libraries/nsd/upgrade/lock_text.o libraries/nsd/upgrade/bigNumber.o libraries/nsd/upgrade/local.o libraries/nsd/upgrade/common.o libraries/nsd/upgrade/main.o libraries/nsd/tdpc/tdp_cmd.o libraries/nsd/tdpc/tdp_client.o libraries/nsd/remote_debugger/remote_debugger.o libraries/nsd/remote_debugger/sd_log.o libraries/nsd/telemetry/telemetry.o libraries/nsd/telemetry/telemetry_data_model.o libraries/nsd/telemetry/telemetry_sysinfo.o libraries/nsd/telemetry/telemetry_collect.o libraries/nsd/telemetry/telemetry_post.o libraries/nsd/tmpd/tmpd_utils.o libraries/nsd/tmpd/tmpd.o libraries/nsd/tmpd/script_business.o libraries/wlan/wlan_module/onboarding.o libraries/wlan/wlan_module/wlan.o libraries/wlan/wlan_module/wifi_control.o libraries/wlan/wlan_module/wlan_data_model.o libraries/wlan/wlan_module/wlan_monitor.o libraries/wlan/wlan_module/wlan_sta.o libraries/wlan/wlan_module/wlan_backup.o libraries/wlan/wlan_module/wlan_ap.o libraries/wlan/wlan_module/wlan_mode_switch.o libraries/wlan/wlan_module/utils.o libraries/wlan/wlan_module/soft_ap.o libraries/wlan/wlan_module/wlan_cascade.o libraries/wlan/wlan_module/cmd.o libraries/wlan/wlan_module/wlan_common.o libraries/wlan/wlan_module/wlan_manager.o libraries/wlan/libwlan_adapter/wlan_region.o libraries/wlan/libwlan_adapter/wlan_adapter.o libraries/wlan/libwlan_adapter/wlan_hostapd.o libraries/wlan/libwlan_adapter/wlan_utils.o libraries/wlan/libwlan_adapter/wlan_adapter_rtl.o libraries/wlan/libwlan_adapter/wlan_script.o libraries/wlan/libwlan_adapter/wlan_wpa_supplicant.o libraries/wlan/libwlan_adapter/wlan_adapter_wq.o libraries/debug_tools/debug_tools/debug_tools_data_model.o libraries/debug_tools/debug_tools/debug_tools.o libraries/debug_tools/debug_tools/coredump.o libraries/libs/libesp32/esp32_insmod.o libraries/libs/libncnn/flatten.cpp.o libraries/libs/libncnn/blob.cpp.o libraries/libs/libncnn/simplestl.cpp.o libraries/libs/libncnn/convolution_mips.cpp.o libraries/libs/libncnn/cumulativesum.cpp.o libraries/libs/libncnn/pipelinecache.cpp.o libraries/libs/libncnn/mat_pixel_affine.cpp.o libraries/libs/libncnn/mat_pixel.cpp.o libraries/libs/libncnn/pipeline.cpp.o libraries/libs/libncnn/paramdict.cpp.o libraries/libs/libncnn/copyto.cpp.o libraries/libs/libncnn/net.cpp.o libraries/libs/libncnn/mat_pixel_drawing.cpp.o libraries/libs/libncnn/mat_pixel_rotate.cpp.o libraries/libs/libncnn/innerproduct_mips.cpp.o libraries/libs/libncnn/mat.cpp.o libraries/libs/libncnn/layer.cpp.o libraries/libs/libncnn/benchmark.cpp.o libraries/libs/libncnn/modelbin.cpp.o libraries/libs/libncnn/flatten_mips.cpp.o libraries/libs/libncnn/pooling_mips.cpp.o libraries/libs/libncnn/allocator.cpp.o libraries/libs/libncnn/datareader.cpp.o libraries/libs/libncnn/innerproduct.cpp.o libraries/libs/libncnn/relu_mips.cpp.o libraries/libs/libncnn/pooling.cpp.o libraries/libs/libncnn/simpleomp.cpp.o libraries/libs/libncnn/convolution.cpp.o libraries/libs/libncnn/input.cpp.o libraries/libs/libncnn/simpleocv.cpp.o libraries/libs/libncnn/mat_pixel_resize.cpp.o libraries/libs/libncnn/command.cpp.o libraries/libs/libncnn/cpu.cpp.o libraries/libs/libncnn/option.cpp.o libraries/libs/libncnn/gpu.cpp.o libraries/libs/libncnn/padding.cpp.o libraries/libs/libncnn/padding_mips.cpp.o libraries/libs/libncnn/relu.cpp.o libraries/libs/libncnn/c_api.cpp.o libraries/libs/libmediautil/tpmd5.o libraries/libs/libmediautil/h265parse.o libraries/libs/libmediautil/avbasicop.o libraries/libs/libmediautil/mbasicop.o libraries/libs/libmediautil/bitstream.o libraries/libs/libmediautil/h264parse.o libraries/libs/libmediautil/basicutil.o libraries/libs/libmediautil/mbuffer.o libraries/libs/libdetectcaps/detect_capability.o libraries/libs/libavdc/libavdc.o libraries/libs/libavdc/aec.o libraries/libs/libavdc/mpp_adapter.o libraries/libs/libavdc/audio.o libraries/libs/libavdc/rmem_calc.o libraries/libs/libavdc/video.o libraries/libs/libavdc/video_api.o libraries/libs/libavdc/aeawb.o libraries/libs/libaudio/samplerate.o libraries/libs/libaudio/audio_utils.o libraries/libs/libcamera/libimage.o libraries/libs/libcamera/libosd.o libraries/libs/libcamera/camera_sar_adc.o libraries/libs/libcamera/camera_cover.o libraries/libs/libcamera/libcover.o libraries/libs/libcamera/libadc.o libraries/libs/libcamera/camera_gpio.o libraries/libs/libcamera/libcamera.o libraries/libs/libcamera/camera_osd.o libraries/libs/libcamera/camera_image.o libraries/libs/libcamera/tpcam_osd.o libraries/libs/libopenapi/fast_openapi_api.o libraries/libs/libopenapi/lib_openapi.o libraries/libs/libmotor/spi_motor_worker.o libraries/libs/libmotor/spi_motor.o libraries/libs/libds/ds_module_ctrl.o libraries/libs/libds/ds_trans_rule.o libraries/libs/libds/ds_blob_data.o libraries/libs/libds/ds_module.o libraries/libs/libds/ds_trans_ctrl.o libraries/libs/libds/ds_slp_parser.o libraries/libs/libds/ds_convert.o libraries/libs/libds/ds_model.o libraries/libs/libds/ds_flash.o libraries/libs/libds/ds_diag.o libraries/libs/libspeaker/libspeaker.o libraries/libs/libspeaker/speaker.o libraries/libs/libsmartdata/smart_data_format.o libraries/libs/libsdm/smart_data.o libraries/libs/libsdm/property.o libraries/libs/libsdm/system.o libraries/libs/libsdm/audio.o libraries/libs/libsdm/permission.o libraries/libs/libjpeg_stream/libjpeg_stream.o libraries/libs/libpwr/pwr.o libraries/libs/libflashio/flashio.o libraries/libs/libtpssl/commonssl.o libraries/libs/libtpssl/tcpApi.o libraries/libs/libtpssl/sslApi.o libraries/libs/libz/deflate.o libraries/libs/libz/adler32.o libraries/libs/libz/gzclose.o libraries/libs/libz/gzread.o libraries/libs/libz/gzwrite.o libraries/libs/libz/zutil.o libraries/libs/libz/inftrees.o libraries/libs/libz/crc32.o libraries/libs/libz/inflate.o libraries/libs/libz/inffast.o libraries/libs/libz/uncompr.o libraries/libs/libz/compress.o libraries/libs/libz/trees.o libraries/libs/libz/infback.o libraries/libs/libz/gzlib.o -Lstaging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib -Lstaging_dir/target-mips-openwrt-linux-uclibc-c200v5/lib -L../sdk/soc/T23/toolchain/mips-gcc540-glibc222-64bit-r3.3.0.smaller/mips-linux-gnu/libc/uclibc/usr/lib -L../sdk/soc/T23/toolchain/mips-gcc540-glibc222-64bit-r3.3.0.smaller/mips-linux-gnu/libc/uclibc/lib -Lstaging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib/libiconv-full/lib -Lstaging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib/libintl-full/lib -Wl,--gc-sections -lidleworker -ldms_tool -ldms -lutils -lmbedtls -lmbedx509 -lmbedcrypto -ljson -lpthread -lm -ludt -ltptimer -ldl -lrt -lwpactrl -Lstaging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib/mpp/ -limp -lsysutils -lalog -laudioProcess -Wl,-rpath-link=staging_dir/target-mips-openwrt-linux-uclibc-c200v5/usr/lib" libraries/avts/p2p/stun.o: In function `stunParseHostName': /home/linzihao/Code/onvif1/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c200v5/avts/streams/p2p/stun.c:1198: warning: gethostbyname is obsolescent, use getnameinfo() instead. libraries/nsd/onvif/onvif_srv.o: In function `check_digest_auth': /home/linzihao/Code/onvif1/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c200v5/nsd/modules/onvif/onvif_server/onvif_srv.c:549: undefined reference to `get_timestamp1' /home/linzihao/Code/onvif1/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c200v5/nsd/modules/onvif/onvif_server/onvif_srv.c:576: undefined reference to `get_timestamp1' libraries/nsd/onvif/onvif_srv.o: In function `onvif_proc_data_srv': /home/linzihao/Code/onvif1/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c200v5/nsd/modules/onvif/onvif_server/onvif_srv.c:604: undefined reference to `get_timestamp1' /home/linzihao/Code/onvif1/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c200v5/nsd/modules/onvif/onvif_server/onvif_srv.c:612: undefined reference to `get_timestamp1' collect2: error: ld returned 1 exit status _这个报错什么意思
11-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值