āĻā§āĻŽāĻŋāĻāĻž
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨
āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻāĻ¯āĻŧā§āĻŦā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻĒā§āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻā§āĻŽ āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ
Teeworlds āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻ˛āĻā§
āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻāĻ¯āĻŧā§āĻŦā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻā§āĻĄ āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨. āĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
- XMLHttpāĻ āĻ¨ā§āĻ°ā§āĻ§/āĻāĻ¨āĻ¯āĻŧāĻ¨, āĻ¯āĻĻāĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ āĻāĻļā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĨāĻžāĻā§, āĻŦāĻž
- āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻā§āĻ.
āĻāĻāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒāĻžāĻļā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¨āĻž
āĻāĻāĻāĻŋ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻā§ - āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĨā§āĻā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨:
āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¸ā§: āĻĻā§āĻ WebRTC āĻ¸āĻšāĻāĻ°ā§āĻŽā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻāĻāĻŋāĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻļā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻĒāĻā§āĻˇā§āĻ° āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ (āĻāĻāĻāĻŋ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻāĻ āĻŦāĻž āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°)
āĻāĻĻāĻ°ā§āĻļāĻāĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ API āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§āĻāĻŋ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖāĻāĻžāĻŦā§ WebRTC āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ UDP āĻ¸āĻā§āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻ¯āĻžāĻ° āĻā§āĻ¨ā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤
āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ°āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄā§ āĻāĻāĻŋāĻ˛ āĻŦāĻŋāĻļāĻĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻ¨āĻž āĻāĻ°ā§āĻ WebRTC-āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§ (āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ)āĨ¤
āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ WebRTC
WebRTC āĻšāĻ˛ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ API-āĻāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ¯āĻž āĻ āĻĄāĻŋāĻ, āĻāĻŋāĻĄāĻŋāĻ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻĄā§āĻāĻžāĻ° āĻĒāĻŋāĻ¯āĻŧāĻžāĻ°-āĻā§-āĻĒāĻŋāĻ¯āĻŧāĻžāĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻāĻ¸āĻŋāĻ āĻ¨āĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ STUN āĻāĻŦāĻ/āĻ āĻĨāĻŦāĻž āĻāĻžāĻ°ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŽāĻŦāĻ¯āĻŧāĻ¸ā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ āĻŦāĻž āĻāĻāĻ¯āĻŧ āĻĻāĻŋāĻā§ NAT āĻĨāĻžāĻāĻ˛ā§āĻ)āĨ¤ āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻ°āĻž SDP āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻ āĻĢāĻžāĻ° āĻāĻŦāĻ āĻāĻ¤ā§āĻ¤āĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ ICE āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°ā§āĨ¤
āĻāĻŋ āĻĻāĻžāĻ°ā§āĻ¨! āĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻ¯āĻŧāĻāĻŋ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ°ā§āĻĒ? āĻāĻ¸ā§āĻ¨ āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻŋ āĻāĻ āĻĒāĻĻāĻā§āĻ˛āĻŋāĻ° āĻ āĻ°ā§āĻĨ āĻā§:
NAT-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻļāĻ¨ āĻā§āĻ°āĻžāĻāĻžāĻ°ā§āĻ¸āĻžāĻ˛ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ (STUN) â NAT āĻŦāĻžāĻāĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻšā§āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĄā§āĻāĻž āĻāĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻž (IP, āĻĒā§āĻ°ā§āĻ) āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĨ¤ āĻ¯āĻĻāĻŋ āĻ¤āĻŋāĻ¨āĻŋ āĻ¤āĻžāĻ° āĻāĻžāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻ°āĻž āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤NAT āĻāĻ° āĻāĻžāĻ°āĻĒāĻžāĻļā§ āĻ°āĻŋāĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ°āĻžāĻāĻžāĻ°ā§āĻ¸āĻžāĻ˛ (āĻāĻžāĻ˛ā§) NAT āĻā§āĻ°āĻžāĻāĻžāĻ°ā§āĻ¸āĻžāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ¸āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĄā§āĻāĻž āĻĢāĻ°āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻ¯āĻž āĻāĻāĻ¯āĻŧ āĻ¸āĻŽāĻāĻā§āĻˇā§āĻ° āĻāĻžāĻā§ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨āĨ¤ āĻāĻāĻŋ āĻ˛ā§āĻā§āĻ¨ā§āĻ¸āĻŋ āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ STUN āĻāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻāĻ°āĻ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ (āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ¸āĻŽāĻā§āĻ° āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻ¸ā§āĻļāĻ¨ āĻā§āĻĄāĻŧā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ), āĻ¤āĻŦā§ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻāĻŋ āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻāĻ˛ā§āĻĒāĨ¤āĻāĻ¨ā§āĻāĻžāĻ°ā§āĻā§āĻāĻŋāĻ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ (āĻŦāĻ°āĻĢ) āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻāĻ¯ā§āĻāĻāĻžāĻ°ā§ āĻ¸āĻŽāĻŦāĻ¯āĻŧāĻ¸ā§āĻĻā§āĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¨ āĻ¸āĻāĻā§āĻ¯āĻ STUN āĻāĻŦāĻ TURN āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĻā§āĻāĻŋ āĻĒāĻŋāĻ¯āĻŧāĻžāĻ°āĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤āĻ¸ā§āĻļāĻ¨ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ (āĻāĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻ¨ āĻā§āĻĒāĻžāĻĻāĻ¨) āĻ¸āĻāĻ¯ā§āĻ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, ICE āĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§, āĻŽāĻžāĻ˛ā§āĻāĻŋāĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻā§āĻĄā§āĻ (āĻāĻāĻāĻŋ āĻ āĻĄāĻŋāĻ/āĻāĻŋāĻĄāĻŋāĻ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§), āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ... āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻ¨ āĻāĻāĻāĻŋ SDP āĻ āĻĢāĻžāĻ° āĻĒāĻžāĻ āĻžāĻ¯āĻŧ, āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻāĻāĻāĻŋ SDP āĻāĻ¤ā§āĻ¤āĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ¨āĻžāĻ¯āĻŧ .. āĻāĻ° āĻĒāĻ°ā§, āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻĻā§āĻ° STUN āĻāĻŦāĻ TURN āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻ¯ā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻ¨āĻ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻ āĻĄā§āĻāĻž āĻāĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻāĻ-āĻ āĻĢ-āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§: āĻāĻāĻāĻŋ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻŦ āĻ¸āĻšāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻžāĻ°āĻŖ āĻāĻ° āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻāĻžāĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻļā§āĻ āĻĒāĻ°ā§āĻŦā§ āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĄā§āĻāĻž āĻĢāĻ°āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻ°āĻž (āĻ¨āĻŋāĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ°ā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§)āĨ¤
āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ WebRTC āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻļā§āĻ āĻ¸āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸ āĻĄāĻžāĻ¯āĻŧāĻžāĻā§āĻ°āĻžāĻŽ
Teeworlds āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŽāĻĄā§āĻ˛ āĻāĻāĻžāĻ°āĻāĻŋāĻ
Teeworlds āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻā§āĻŦāĻ āĻ¸āĻšāĻ:
- āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĻā§āĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĨ¤
- āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻ°āĻž āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋāĻ¤ā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°ā§ āĻā§āĻŽāĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻāĻāĻŋ āĻāĻāĻŦāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻŽ āĻšā§āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤
- āĻā§āĻŽā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
- āĻā§āĻŽ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻĄā§āĻāĻž āĻāĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ WebRTC āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻāĻŽāĻ°āĻž āĻā§āĻŽā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻ¯ā§āĻ āĻĻā§āĻ¯āĻŧ ...
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻ¨
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ˛āĻāĻŋāĻā§āĻ° āĻ āĻāĻžāĻŦā§āĻ° āĻāĻāĻāĻŋ āĻāĻŽā§āĻāĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§: āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ Github āĻĒā§āĻˇā§āĻ āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻž Cloudflare-āĻāĻ° āĻĒāĻŋāĻāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻšāĻžāĻ°ā§āĻĄāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻāĻāĻžāĻŦā§ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§ āĻĻā§āĻ°ā§āĻ¤ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻā§āĻ āĻāĻĒāĻāĻžāĻāĻŽ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ¸āĻ˛ā§, āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻ˛ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻžāĻā§āĻ¯āĻŦāĻžāĻ¨ āĻšāĻ āĻāĻŦāĻ āĻā§āĻŽāĻāĻŋ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻšāĻ¯āĻŧā§ āĻāĻ ā§, āĻ¤āĻŦā§ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻāĻ§ā§āĻ¨āĻŋāĻā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤
āĻ¯āĻžāĻāĻšā§āĻ, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
- āĻāĻ āĻŦāĻž āĻāĻāĻžāĻ§āĻŋāĻ STUN āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°: āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§ā§ˇ
- āĻāĻŽāĻĒāĻā§āĻˇā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°: āĻāĻāĻžāĻ¨ā§ āĻā§āĻ¨ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋā§ˇ āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ¸āĻŽāĻ¯āĻŧ STUN āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻāĻŦāĻ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻāĻžāĻ°ā§āĻ° p2p āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§), āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĢāĻ˛āĻŦā§āĻ¯āĻžāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ°ā§āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
- āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°: āĻ āĻ¨ā§āĻ¯ āĻĻā§āĻāĻŋ āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨, āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻŽāĻžāĻ¨āĻ¸āĻŽā§āĻŽāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ¸āĻ˛ā§ āĻāĻŋ āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻšāĻŦā§ āĻ¤āĻž āĻāĻŋāĻā§āĻāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻ āĻ˛ā§āĻĒ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
- āĻāĻŋāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄāĻ¸ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°: āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻ āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦā§āĻ° āĻŦāĻŋāĻā§āĻāĻžāĻĒāĻ¨ āĻĻāĻŋāĻ¤ā§ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž (āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻ¤āĻžāĻ°āĻž āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻžāĻ¨ā§), āĻāĻāĻŋ āĻāĻžāĻ˛ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻ°āĻž āĻāĻ˛ā§āĻŽā§āĻ˛ā§ āĻ˛ā§āĻāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻŽāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž Google-āĻāĻ° āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° STUN āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻāĻŦāĻ āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋā§ˇ
āĻļā§āĻˇ āĻĻā§āĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ
- Teeworlds āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¤āĻĨā§āĻ¯ (āĻ¨āĻžāĻŽ, āĻāĻāĻĒāĻŋ, āĻŽāĻžāĻ¨āĻāĻŋāĻ¤ā§āĻ°, āĻŽā§āĻĄ, ...) āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§āĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻŦāĻ¸ā§āĻ¤ā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¨ā§āĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻ°āĻž āĻšā§āĻŽ āĻĒā§āĻā§ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻāĻŋ HTML āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻ°āĻž āĻā§āĻŦāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻā§āĻŽā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛āĻŋāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤āĨ¤
āĻā§āĻŽā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻŦāĻ āĻšā§āĻŽ āĻĒā§āĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻ¸āĻā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ API āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯āĻž Posix UDP āĻ¸āĻā§āĻā§āĻ° āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ, āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŽāĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻšāĻāĻ¤āĻŽ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻā§āĻ¤ āĻ°āĻžāĻāĻāĻŋāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ: āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§āĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻāĻ "āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ LAN" āĻ āĻ°āĻ¯āĻŧā§āĻā§ā§ˇ
āĻ āĻ¤āĻāĻŦ, āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨āĻ¨ā§āĻ¯ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ: āĻ āĻ¨āĻ¨ā§āĻ¯ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§āĻ¸ āĻā§ āĻŽāĻžāĻ¨ (āĻĄā§āĻŽā§āĻ¨ āĻ¨āĻžāĻŽā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻĒ) āĻ āĻ¨āĻ¨ā§āĻ¯āĻāĻžāĻŦā§ āĻ¸āĻŽāĻāĻā§āĻˇāĻĻā§āĻ° āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ, āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻā§ āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ "āĻāĻžāĻ˛" āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°ā§ā§ˇ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻāĻāĻĒāĻŋ āĻ ā§āĻ¯āĻžāĻĄā§āĻ°ā§āĻ¸ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĻā§āĻ° āĻāĻ°ā§, āĻ¯āĻž āĻāĻāĻāĻŋ āĻ -āĻ¤ā§āĻā§āĻ āĻāĻžāĻāĨ¤
āĻāĻāĻžāĻ¨ā§ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ API āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
// Create and destroy a socket
int socket();
int close(int fd);
// Bind a socket to a port, and publish it on Firebase
int bind(int fd, AddrInfo* addr);
// Send a packet. This lazily create a WebRTC connection to the
// peer when necessary
int sendto(int fd, uint8_t* buf, int len, const AddrInfo* addr);
// Receive the packets destined to this socket
int recvfrom(int fd, uint8_t* buf, int len, AddrInfo* addr);
// Be notified when new packets arrived
int recvCallback(Callback cb);
// Obtain a local ip address for this peer key
uint32_t resolve(client::String* key);
// Get the peer key for this ip
String* reverseResolve(uint32_t addr);
// Get the local peer key
String* local_key();
// Initialize the library with the given Firebase database and
// WebRTc connection options
void init(client::FirebaseConfig* fb, client::RTCConfiguration* ice);
āĻāĻĒāĻŋāĻāĻ āĻ¸āĻšāĻ āĻāĻŦāĻ āĻĒāĻ¸āĻŋāĻā§āĻ¸ āĻ¸āĻā§āĻāĻ¸ āĻāĻĒāĻŋāĻāĻ āĻāĻ° āĻŽāĻ¤ā§, āĻ¤āĻŦā§ āĻāĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§: āĻāĻ˛āĻŦā§āĻ¯āĻžāĻ āĻ˛āĻ āĻāĻ°āĻž, āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻĒāĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻ āĻ˛āĻ¸ āĻ¸āĻāĻ¯ā§āĻ.
āĻāĻ˛āĻŦā§āĻ¯āĻžāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨
āĻāĻŽāĻ¨āĻāĻŋ āĻ¯āĻĻāĻŋ āĻŽā§āĻ˛ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻ¨āĻ¨-āĻŦā§āĻ˛āĻāĻŋāĻ I/O āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻā§āĻĄāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ°āĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻ° āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤
āĻāĻ° āĻāĻžāĻ°āĻŖ āĻšāĻ˛ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻā§āĻ¨ā§āĻ āĻ˛ā§āĻĒ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĨā§āĻā§ āĻ˛ā§āĻāĻžāĻ¨ā§ āĻĨāĻžāĻā§ (āĻ¸ā§āĻāĻŋ JavaScript āĻŦāĻž WebAssembly āĻšā§āĻ)āĨ¤
āĻĻā§āĻļā§āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻŦā§ āĻā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
while(running) {
select(...); // wait for I/O events
while(true) {
int r = readfrom(...); // try to read
if (r < 0 && errno == EWOULDBLOCK) // no more data available
break;
...
}
...
}
āĻ¯āĻĻāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻ˛ā§āĻĒāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ˛ā§āĻāĻžāĻ¨ā§ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋāĻā§ āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
auto cb = []() { // this will be called when new data is available
while(true) {
int r = readfrom(...); // try to read
if (r < 0 && errno == EWOULDBLOCK) // no more data available
break;
...
}
...
};
recvCallback(cb); // register the callback
āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻĒāĻŋ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻ
āĻāĻŽāĻžāĻĻā§āĻ° "āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ"-āĻāĻ° āĻ¨ā§āĻĄ āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ¨āĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§āĻ¸ āĻā§ (āĻāĻā§āĻ˛āĻŋ āĻāĻŽāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻ¯āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°āĻāĻŽ: -LmEC50PYZLCiCP-vqde
).
āĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻžāĻ°āĻŖ āĻāĻāĻĒāĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ (āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻˇā§āĻĒāĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻž), āĻ¤āĻŦā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻžāĻ¸ā§āĻāĻ āĻŽāĻžāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻŦāĻ¯āĻŧāĻ¸ā§āĻĻā§āĻ° āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻāĻāĻŋ āĻ āĻŋāĻ āĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ. resolve
и reverseResolve
: āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻā§āĻ¨ā§āĻāĻžāĻŦā§ āĻā§āĻāĻŋāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻŽāĻžāĻ¨ (āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨āĻĒā§āĻ āĻŦāĻž āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§) āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŦāĻžāĻāĻŋ āĻāĻĒāĻŋāĻāĻāĻ āĻ¸āĻ°āĻ˛āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻāĻ¯āĻŧā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻ āĻŽāĻžāĻ¨āĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĨ¤
āĻāĻāĻŋ DNS āĻ˛ā§āĻāĻāĻĒā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻĒ, āĻ¤āĻŦā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻŋāĻā§ āĻ§āĻ°āĻŖā§āĻ° āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻāĻāĻĄā§āĻ¨ā§āĻāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ āĻ˛āĻ¸ āĻ¸āĻāĻ¯ā§āĻ
UDP-āĻāĻ° āĻā§āĻ¨ā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻĻā§āĻā§āĻāĻŋ, WebRTC-āĻāĻ° āĻĻā§āĻāĻŋ āĻ¸āĻŽāĻāĻā§āĻˇā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ, (sendto
/recvfrom
āĻĒā§āĻ°ā§āĻŦā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸ā§āĻŦā§āĻā§āĻāĻžāĻāĻžāĻ°ā§ āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻ¸āĻžāĻĨā§), āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ
āĻŦāĻļā§āĻ¯āĻ API-āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻāĻŋ "āĻ
āĻ˛āĻ¸" (āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤) āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ā§ˇ
āĻāĻāĻĄāĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ "āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°" āĻāĻŦāĻ "āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ" āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ¯ā§āĻāĻžāĻ¯ā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻāĻā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤:
- āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ˛
bind()
āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻā§ āĻāĻžāĻ¨āĻžāĻ¤ā§ āĻ¯ā§ āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°ā§āĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ¤ā§ āĻāĻžāĻ¯āĻŧāĨ¤
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§-āĻāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻž āĻĒā§āĻ°ā§āĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻāĻ° āĻ¸āĻžāĻŦāĻā§āĻ°āĻŋāĻ¤ā§ āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻļā§āĻ¨āĻŦāĨ¤
- āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ˛
recvfrom()
, āĻāĻ āĻĒā§āĻ°ā§āĻā§ āĻ¯ā§āĻā§āĻ¨ āĻšā§āĻ¸ā§āĻ āĻĨā§āĻā§ āĻāĻ¸āĻž āĻĒā§āĻ¯āĻžāĻā§āĻ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻžāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻŦāĻ¨ā§āĻĻāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻ¸āĻžāĻ°āĻŋ āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻžāĻ°āĻŋ āĻāĻā§, āĻāĻŦāĻ āĻāĻŽāĻ°āĻž WebRTC āĻĄā§āĻāĻžāĻā§āĻ°āĻžāĻŽā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻā§āĻ¸ āĻāĻŦāĻ āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°ā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¸āĻŦā§ āĻ¤āĻāĻ¨ āĻā§āĻ¨ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĢāĻ°āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻ˛āĻāĻŋ āĻ¨āĻ¨-āĻŦā§āĻ˛āĻāĻŋāĻ, āĻ¤āĻžāĻ āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¨āĻž āĻĨāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ -1 āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸ā§āĻ āĻāĻ°āĻŋ errno=EWOULDBLOCK
.
- āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻĒāĻŋ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻ˛ āĻāĻ°ā§
sendto()
. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻāĻ˛āĻ āĻāĻ°ā§āĨ¤bind()
, āĻ¤āĻžāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§recvfrom()
āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻŦāĻžāĻāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻ¨āĻž āĻāĻ°ā§āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻŦā§āĻ¨āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻā§ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ resolve()
āĻāĻāĻāĻŋ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ¤ā§āĨ¤
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ WebRTC āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻļā§āĻ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ āĻ¯āĻĻāĻŋ āĻĻā§āĻāĻŋ āĻ¸āĻšāĻāĻ°ā§āĻŽā§ āĻāĻāĻ¨āĻ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻž āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻ āĻĒāĻŋāĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻāĻ WebRTC DataChannel āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇ āĻāĻžāĻāĻ āĻāĻ°āĻŋ bind()
āĻ¯āĻžāĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ sendto()
āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻā§āĻ¨ā§ āĻāĻžāĻ°āĻŖā§ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻŦāĻšāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ Firebase-āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻ¤āĻžāĻ° SDP āĻ āĻĢāĻžāĻ°āĻāĻŋ āĻ˛ā§āĻā§, āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ¨āĻžāĻ¯āĻŧāĨ¤
āĻ¨ā§āĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ āĻ¸ā§āĻāĻŋāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°āĻŦāĻžāĻšā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĨā§āĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻ āĻĒāĻ°ā§āĻŦā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŋāĻ¤ā§āĻ°
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻĄāĻŧā§ āĻĨāĻžāĻā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¤āĻ¤ā§āĻ¤ā§āĻŦāĻāĻŋ āĻāĻ°ā§āĻŽā§ āĻĻā§āĻāĻ¤ā§ āĻāĻā§āĻ°āĻšā§āĨ¤ āĻā§āĻŽāĻāĻŋ āĻā§āĻ˛āĻž āĻ¯āĻžāĻŦā§
āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°ā§āĻ¤āĻŋ āĻŽā§āĻ¯āĻžāĻ
āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻā§āĻĄ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ
āĻāĻ¤ā§āĻ¸: www.habr.com