UNPKG

iwebpp.io

Version:

iWebPP name-client library for node.js

115 lines (91 loc) 5.38 kB
// iWebPP Session Establish Protocol Definition // Copyright (c) 2012 Tom Zhou<iwebpp@gmail.com> // 'use strickt'; // Version 1.0 exports.version = exports.VERSION = '1.0'; // the process between name-server and name-client is below: // 1. started name-server, relay-server // 2. waiting for name-client connect to name-server // 3. calculating and analyzing name-server to name-client traceroute // 4. name-server responds to name-client's P2P or C/S connection requirement // 5. name-client start keep-alive timer to maintain self's public ip/port - TBD... // SEP offer/answer opcode: // 0/1: client<->server for SDP session setup offer/answer // 2/3: client<->server for NAT type report offer/answer // 4/5: client<->server for STUN session setup offer/answer // 6/7: server<->client for UDP hole punch setup offer/answer // 8/9: client<->server for TURN session setup offer/answer // 10/11: client<->server for KGEN session setup offer/answer exports.sep_opc_sdp_offer = exports.SEP_OPC_SDP_OFFER = 0; exports.sep_opc_sdp_answer = exports.SEP_OPC_SDP_ANSWER = 1; exports.sep_opc_nat_offer = exports.SEP_OPC_NAT_OFFER = 2; exports.sep_opc_nat_answer = exports.SEP_OPC_NAT_ANSWER = 3; exports.sep_opc_stun_offer = exports.SEP_OPC_STUN_OFFER = 4; exports.sep_opc_stun_answer = exports.SEP_OPC_STUN_ANSWER = 5; exports.sep_opc_punch_offer = exports.SEP_OPC_PUNCH_OFFER = 6; exports.sep_opc_punch_answer = exports.SEP_OPC_PUNCH_ANSWER = 7; exports.sep_opc_turn_offer = exports.SEP_OPC_TURN_OFFER = 8; exports.sep_opc_turn_answer = exports.SEP_OPC_TURN_ANSWER = 9; exports.sep_opc_kgen_offer = exports.SEP_OPC_KGEN_OFFER = 10; exports.sep_opc_kgen_answer = exports.SEP_OPC_KGEN_ANSWER = 11; // SEP user's device and login info opcode: exports.sep_opc_all_login_offer = exports.SEP_OPC_ALL_LOGIN_OFFER = 12; exports.sep_opc_all_login_answer = exports.SEP_OPC_ALL_LOGIN_ANSWER = 13; exports.sep_opc_usr_login_offer = exports.SEP_OPC_USR_LOGIN_OFFER = 14; exports.sep_opc_usr_login_answer = exports.SEP_OPC_USR_LOGIN_ANSWER = 15; exports.sep_opc_all_usr_offer = exports.SEP_OPC_ALL_USR_OFFER = 16; exports.sep_opc_all_usr_answer = exports.SEP_OPC_ALL_USR_ANSWER = 17; exports.sep_opc_all_sdp_offer = exports.SEP_OPC_ALL_SDP_OFFER = 18; exports.sep_opc_all_sdp_answer = exports.SEP_OPC_ALL_SDP_ANSWER = 19; exports.sep_opc_clnt_sdp_offer = exports.SEP_OPC_CLNT_SDP_OFFER = 20; exports.sep_opc_clnt_sdp_answer = exports.SEP_OPC_CLNT_SDP_ANSWER = 21; // Peer service opcode: exports.sep_opc_srv_report_offer = exports.SEP_OPC_SRV_REPORT_OFFER = 22; exports.sep_opc_srv_report_answer = exports.SEP_OPC_SRV_REPORT_ANSWER = 23; exports.sep_opc_srv_update_offer = exports.SEP_OPC_SRV_UPDATE_OFFER = 24; exports.sep_opc_srv_update_answer = exports.SEP_OPC_SRV_UPDATE_ANSWER = 25; // vURL info opcode: exports.sep_opc_vurl_info_offer = exports.SEP_OPC_VURL_INFO_OFFER = 26; exports.sep_opc_vurl_info_answer = exports.SEP_OPC_VURL_INFO_ANSWER = 27; // Peer service query opcode: exports.sep_opc_srv_query_offer = exports.SEP_OPC_SRV_QUERY_OFFER = 28; exports.sep_opc_srv_query_answer = exports.SEP_OPC_SRV_QUERY_ANSWER = 29; // Heart-beat opcode: exports.sep_opc_heart_beat_offer = exports.SEP_OPC_HEART_BEAT_OFFER = 30; exports.sep_opc_heart_beat_answer = exports.SEP_OPC_HEART_BEAT_ANSWER = 31; // SEP answer state exports.sep_opc_state_ready = exports.SEP_OPC_STATE_READY = 0; exports.sep_opc_state_fail = exports.SEP_OPC_STATE_FAIL = 1; // Peer connection mode: c/s vs p2p exports.sep_mode_cs = exports.SEP_MODE_CS = 0; exports.sep_mode_pp = exports.SEP_MODE_PP = 1; // Peer session mode: TURN or STUN exports.sep_sesn_stun = exports.SEP_SESN_STUN = 0; exports.sep_sesn_turn = exports.SEP_SESN_TURN = 1; // Peer secure mode, level-based // supported secure mode: // - 0: disable https/wss(SSL) // - 1: enable https/wss(SSL) // - 2: enable https/wss(SSL), // allow turn-agent connection, // allow host-only-based-token authentication with stun session // - 3: enable https/wss, // allow turn-agent connection, // allow host-port-based-token authentication with stun session exports.sep_sec_none = exports.SEP_SEC_NONE = 0; exports.sep_sec_ssl = exports.SEP_SEC_SSL = 1; exports.sep_sec_ssl_acl_host = exports.SEP_SEC_SSL_ACL_HOST = 2; exports.sep_sec_ssl_acl_host_port = exports.SEP_SEC_SSL_ACL_HOST_PORT = 3; // SSL authentication mode in peer secure mode // supported ssl mode: // - 0: client authenticate server only // - 1: client and server authenticate each other exports.sep_ssl_auth_srv_only = exports.SEP_SSL_AUTH_SRV_ONLY = 0; exports.sep_ssl_auth_srv_clnt = exports.SEP_SSL_AUTH_SRV_CLNT = 1; // WebSocket Server URL control path prefix exports.sep_ctrlpath_ns = exports.SEP_CTRLPATH_NS = '/ctrlpathns'; // name server, reserved exports.sep_ctrlpath_as = exports.SEP_CTRLPATH_AS = '/ctrlpathas'; // agent server, reserved exports.sep_ctrlpath_ps = exports.SEP_CTRLPATH_PS = '/ctrlpathps'; // proxy server, reserved exports.sep_ctrlpath_hs = exports.SEP_CTRLPATH_HS = '/ctrlpathhs'; // hole punch server, reserved exports.sep_ctrlpath_bs = exports.SEP_CTRLPATH_BS = '/'; // business server, default path '/'