Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

ʻO ke kamaʻilio wikiō ke ala nui o ke kamaʻilio ʻana ma waena o ke kumu a me ka haumāna ma ka paepae Vimbox. Ua haʻalele mākou iā Skype i kahi manawa i hala aku nei, ua hoʻāʻo i kekahi mau hoʻonā ʻaoʻao ʻekolu a ua hoʻoholo hope ma ka WebRTC - Janus-gateway hui. No kekahi manawa ua hauʻoli mākou i nā mea a pau, akā naʻe, ua hoʻomau ʻia kekahi mau mea maikaʻi ʻole. ʻO ka hopena, ua hana ʻia kahi kuhikuhi wikiō ʻokoʻa.

Ua noi au iā Kirill Rogovoy, ke poʻo o ke ala hou, e kamaʻilio e pili ana i ka ulu ʻana o ke kamaʻilio wikiō ma Skyeng, nā pilikia i ʻike ʻia, nā hopena a me nā koʻokoʻo a mākou i hoʻohana hope ai. Manaʻo mākou e pono ka ʻatikala no nā hui e hana pū ana i nā wikiō ma o lākou iho ma o kahi noi pūnaewele.

He wahi moʻolelo

I ke kauwela o 2017, ua kamaʻilio ke poʻo o Skyeng development, ʻo Sergey Safonov, ma Backend Conf me kahi moʻolelo e pili ana i kā mākou "haʻalele iā Skype a hoʻokō iā WebRTC." Hiki i ka poʻe hoihoi ke nānā i ka hoʻopaʻa ʻana o ka haʻiʻōlelo ma loulou (~ 45 min), a eia wau e wehewehe pōkole i kona ʻano.

No ke kula ʻo Skyeng, ʻo ke kamaʻilio wikiō ke ala mua o ke kamaʻilio kumu-haumāna. I ka wā mua, ua hoʻohana ʻia ʻo Skype, akā ʻaʻole i ʻoluʻolu no nā kumu he nui, ma muli o ka nele o nā lāʻau a me ka hiki ʻole ke hoʻohui pololei i ka noi pūnaewele. No laila, ua hana mākou i nā ʻano hoʻokolohua āpau.

ʻOiaʻiʻo, ʻo kā mākou koi no ke kamaʻilio wikiō e like me kēia:
- kūpaʻa;
- kumu kūʻai haʻahaʻa no kēlā me kēia haʻawina;
- hoʻopaʻa haʻawina;
- ka nānā ʻana i ka mea e ʻōlelo i ka nui (he mea nui iā mākou ka ʻōlelo ʻana o nā haumāna ma mua o ke kumu i ka wā o nā haʻawina);
- ka hoʻonui laina;
- hiki ke hoʻohana i ka UDP a me TCP.

ʻO ka mea mua i hoʻāʻo ʻia e hoʻokō i ka Tokbox ma 2013. Ua maikaʻi nā mea a pau, akā ua lilo ia i mea pipiʻi loa - 113 rubles i kēlā me kēia haʻawina - a ʻai i ka waiwai.

A laila ma 2015, ua hoʻohui ʻia ʻo Voximplant. Eia ka hana e pono ai mākou e hahai i ka mea i ʻōlelo i ka nui, a i ka manawa like ʻoi aku ka maikaʻi o ka hopena: inā hoʻopaʻa ʻia nā leo leo, he 20 rubles no kēlā me kēia haʻawina. Eia naʻe, hana wale ia ma o UDP a ʻaʻole hiki ke hoʻololi iā TCP. Eia naʻe, ma kahi o 40% o nā haumāna i pau i ka hoʻohana ʻana.

I hoʻokahi makahiki ma hope mai, ua hoʻomaka mākou e loaʻa nā mea kūʻai aku ʻoihana me kā lākou mau koi kikoʻī. No ka laʻana, pono e hana nā mea āpau ma o ka polokalamu kele pūnaewele, wehe wale ka hui i ka http a me https; ʻo ia hoʻi, ʻaʻohe Skype a i ʻole UDP. ʻO nā mea kūʻai aku = kālā, no laila hoʻi lākou i Tokbox, akā ʻaʻole i pau ka pilikia o ke kumukūʻai.

Hoʻoholo - WebRTC a me Janus

Hoʻoholo e hoʻohana kahua polokalamu kele pūnaewele no ke kamaʻilio wikiō peer-to-peer WebRTC. ʻO ia ke kuleana no ka hoʻokumu ʻana i kahi pilina, hoʻopā a me ka hoʻokaʻawale ʻana i nā kahawai, ka hoʻonohonoho ʻana i nā ala a me ka hoʻokele maikaʻi me ka mālama ʻana i nā glitches pūnaewele. No kā mākou ʻaoʻao, pono mākou e hōʻoia i ka heluhelu ʻana i nā kahawai mai ka kamera a me ka microphone, ke kiʻi ʻana i ke wikiō, ka hoʻokele ʻana i ka pilina, ka hoʻokumu ʻana i kahi pilina WebRTC a me ka hoʻouna ʻana i nā kahawai iā ia, a me ka hoʻouna ʻana i nā leka hōʻailona ma waena o nā mea kūʻai aku e hoʻokumu i kahi pilina (WebRTC ponoʻī e wehewehe wale i ka hōpili ʻikepili, akā ʻaʻole kāna hoʻololi ʻana i ka mīkini). Inā aia nā mea kūʻai ma hope o NAT, hoʻopili ʻo WebRTC i nā kikowaena STUN; inā ʻaʻole kōkua kēia, TURN server.

ʻAʻole lawa ka pilina p2p maʻamau iā mākou, no ka mea makemake mākou e hoʻopaʻa i nā haʻawina no ka nānā hou ʻana i ka hihia o nā hoʻopiʻi. No laila, hoʻouna mākou i nā kahawai WebRTC ma o kahi relay ʻO Janus Gateway na Meetecho. ʻO ka hopena, ʻaʻole ʻike nā mea kūʻai aku i nā helu o kēlā me kēia, ʻike wale i ka helu kikowaena Janus; hana pū ia i nā hana o kahi kikowaena hōʻailona. Loaʻa iā Janus nā hiʻohiʻona he nui a mākou e pono ai: hoʻololi maʻalahi iā TCP inā paʻa ka UDP i ka mea kūʻai; hiki ke hoʻopaʻa i nā kahawai UDP a me TCP; scalable; Aia kekahi plugin i kūkulu ʻia no nā hoʻāʻo echo. Inā pono, pili pono nā kikowaena STUN a me TURN mai Twilio.

I ke kauwela o 2017, ua loaʻa iā mākou ʻelua mau kikowaena Janus e holo ana, me kahi kikowaena hou no ka hoʻopaʻa ʻana i nā faila leo a me nā faila wikiō, i ʻole e noho i nā kaʻina hana o nā mea nui. I ka hoʻohui ʻana, ua koho ʻia nā kikowaena Janus ma ke ʻano odd-even (helu hoʻohui). I kēlā manawa, ua lawa kēia, e like me kā mākou mau manaʻo, hāʻawi ia i kahi palena palekana ʻehā, ʻo ka pākēneka hoʻokō ma kahi o 80. I ka manawa like, ua hoʻemi ʻia ke kumukūʻai i ~ 2 rubles no kēlā me kēia haʻawina, me ka hoʻomohala a me ke kākoʻo.

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

Ke hoʻi nei i ke kumuhana o ke kamaʻilio wikiō

Ke nānā mau nei mākou i nā manaʻo mai nā haumāna a me nā kumu i mea e ʻike ai a hoʻoponopono i nā pilikia i ka manawa kūpono. Ma ke kauwela o 2018, ua paʻa ka maikaʻi o ke kelepona ma kahi mua ma waena o nā hoʻopiʻi. Ma kekahi ʻaoʻao, ʻo ia hoʻi, ua lanakila mākou ma luna o nā hemahema ʻē aʻe. Ma ka ʻaoʻao ʻē aʻe, pono e hana koke i kahi mea: inā pilikia ka haʻawina, pilikia mākou i ka nalowale ʻana o kona waiwai, i kekahi manawa me ke kumukūʻai o ke kūʻai ʻana i ka pūʻolo aʻe, a inā hoʻopau ʻia ka haʻawina hoʻomaka, pilikia mākou i ka nalowale ʻana i kahi mea kūʻai aku. pau loa.

I kēlā manawa, aia kā mākou kamaʻilio wikiō ma ke ʻano MVP. ʻO ka ʻōlelo maʻalahi, ua hoʻomaka lākou, ua hana, ua hoʻonui lākou i hoʻokahi manawa, maopopo lākou pehea e hana ai - maikaʻi, maikaʻi. Inā hana ia, mai hoʻoponopono. ʻAʻohe kanaka i kamaʻilio noʻonoʻo i ka pilikia o ka maikaʻi kamaʻilio. Ma ʻAukake, ua ʻike ʻia ʻaʻole hiki ke hoʻomau kēia, a ua hoʻomaka mākou i kahi kuhikuhi kaʻawale e ʻike ai i ka hewa o WebRTC a me Janus.

Ma ka hoʻokomo, ua loaʻa kēia kuhikuhi: he hopena MVP, ʻaʻohe metric, ʻaʻohe pahuhopu, ʻaʻohe kaʻina hana no ka hoʻomaikaʻi ʻana, ʻoiai ʻo 7% o nā kumu e hoʻopiʻi i ka maikaʻi o ke kamaʻilio (ʻaʻohe ʻikepili i nā haumāna kekahi).

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

Ke hoʻomaka nei kahi kuhikuhi hou

ʻO ke kauoha e like me kēia:

  • ʻO ke poʻo o ka ʻoihana, ʻo ia hoʻi ka mea hoʻomohala nui.
  • Kōkua ʻo QA i ka hoʻololi ʻana, ʻimi i nā ala hou e hana i nā kūlana kamaʻilio paʻa ʻole, a hōʻike i nā pilikia mai ka laina mua.
  • Ke nānā mau nei ka mea loiloi i nā pilina like ʻole i ka ʻikepili ʻenehana, hoʻomaikaʻi i ka nānā ʻana i nā manaʻo o ka mea hoʻohana, a nānā i nā hopena o nā hoʻokolohua.
  • Kōkua ka luna huahana i ke kuhikuhi holoʻokoʻa a me ka hoʻokaʻawale ʻana i nā kumuwaiwai no nā hoʻokolohua.
  • ʻO ka mea hoʻomohala ʻelua e kōkua pinepine i ka papahana a me nā hana pili.

No ka hoʻomaka ʻana, hoʻonohonoho mākou i kahi metric hilinaʻi e nānā i nā loli i nā loiloi maikaʻi kamaʻilio (awelika i nā lā, nā pule, nā mahina). I kēlā manawa, he mau māka kēia mai nā kumu, a ua hoʻohui ʻia nā māka mai nā haumāna iā lākou. A laila hoʻomaka lākou e kūkulu i nā kuhiakau e pili ana i ka hana hewa, hoʻoponopono, a nānā i nā loli i ka dynamics. Hele mākou no ka hua haʻahaʻa: no ka laʻana, ua hoʻololi mākou i ka codec vp8 me vp9, ua hoʻomaikaʻi ka hana. Ua hoʻāʻo mākou e pāʻani me nā hoʻonohonoho Janus a hana i nā hoʻokolohua ʻē aʻe - ma ka hapa nui ʻaʻole lākou i alakaʻi i kekahi mea.

Ma ka papa ʻelua, ua puka mai kahi kuhiakau: ʻO WebRTC kahi hoʻonā peer-to-peer, a hoʻohana mākou i kahi kikowaena ma waena. Aia paha ka pilikia maanei? Ua hoʻomaka mākou e ʻeli a loaʻa ka hoʻomaikaʻi nui loa i kēia manawa.

I kēlā manawa, ua koho ʻia kahi kikowaena mai ka loko wai me ka hoʻohana ʻana i kahi algorithm naʻaupō: loaʻa kēlā me kēia "kaumaha", e pili ana i ke kahawai a me ka mana, a ua hoʻāʻo mākou e hoʻouna i ka mea hoʻohana i ka mea me ka "kaumaha" nui loa. ka nānā ʻana i kahi o ka mea hoʻohana ma ka ʻāina. ʻO ka hopena, hiki i kahi kumu mai St. Petersburg ke kamaʻilio me kahi haumāna mai Siberia ma Moscow, ʻaʻole ma o kā mākou kikowaena Janus ma St. Petersburg.

Ua hana hou ʻia ka algorithm: i kēia manawa, i ka wā e wehe ai kahi mea hoʻohana i kā mākou kahua, hōʻiliʻili mākou i nā pings mai iā ia i nā kikowaena āpau me ka hoʻohana ʻana iā Ajax. I ka hoʻokumu ʻana i kahi pilina, koho mākou i ʻelua pings (kumu-server a me haumāna-server) me ka liʻiliʻi loa. ʻO ka liʻiliʻi o ka ping ʻo ia ka liʻiliʻi o ka mamao o ka pūnaewele i ke kikowaena; ʻO ka mamao pōkole, ʻo ia ka liʻiliʻi o ka nalo ʻana o nā ʻeke; ʻO ka poho packet ka mea nui maikaʻi ʻole i ke kamaʻilio wikiō. Ua hāʻule ka hapa o ka negativity i ka hapalua i loko o ʻekolu mahina (no ka pololei, ua hana ʻia nā hoʻokolohua ʻē aʻe i kēia manawa, akā ʻoi aku ka hopena o kēia.

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

Ua ʻike hou mākou i kekahi mea ʻike ʻole, akā he mea koʻikoʻi: ma kahi o kahi kikowaena Janus ikaika ma kahi kahawai mānoanoa, ʻoi aku ka maikaʻi o ka loaʻa ʻana o ʻelua mau mea maʻalahi me ka bandwidth thinner. Ua maopopo kēia ma hope o kā mākou kūʻai ʻana i nā mīkini ikaika me ka manaʻolana e hoʻopaʻa i nā lumi he nui (nā hālāwai kūkā) i loko o lākou i ka manawa like. Loaʻa i nā kikowaena ka palena bandwidth, hiki iā mākou ke unuhi pololei i ka helu o nā lumi - ʻike mākou i ka nui o nā mea hiki ke wehe ʻia, no ka laʻana, ma 300 Mbit/s. Ke wehe ʻia nā lumi he nui ma kahi kikowaena, hoʻōki mākou i ke koho ʻana no nā hana hou a hiki i ka emi ʻana o ka ukana. ʻO ka manaʻo, i ke kūʻai ʻana i kahi mīkini ikaika, e hoʻouka mākou i ke kahawai iā ia i ka nui, i ka hopena e kaupalena ʻia e ka mea hana a me ka hoʻomanaʻo, ʻaʻole ma ka bandwidth. Akā ua ʻike ʻia ma hope o kekahi helu o nā lumi hāmama (420), ʻoiai ʻo ka ʻoiaʻiʻo o ka ukana ma ka kaʻina hana, ka hoʻomanaʻo a me ka disk i mamao loa mai nā palena, hoʻomaka ka negativity i ke kākoʻo ʻenehana. ʻIke ʻia, ke ulu nei kekahi mea i loko o Janus, aia kekahi mau mea paʻa ma laila. Hoʻomaka mākou i ka hoʻokolohua, hoʻohaʻahaʻa i ka palena bandwidth mai 300 a 200 Mbit / s, a ua pau nā pilikia. I kēia manawa ua kūʻai mākou i ʻekolu mau kikowaena hou i ka manawa hoʻokahi me nā palena haʻahaʻa a me nā hiʻohiʻona, manaʻo mākou e alakaʻi kēia i kahi hoʻomaikaʻi paʻa i ka maikaʻi o ke kamaʻilio. ʻOiaʻiʻo, ʻaʻole mākou i hoʻāʻo e noʻonoʻo i ka mea e hana nei ma laila; ʻo kā mākou koʻokoʻo nā mea āpau. I ko mākou pale ʻana, e ʻōlelo mākou i kēlā manawa he mea pono e hoʻoponopono i ka pilikia koʻikoʻi i ka wikiwiki, a ʻaʻole e hana nani; Eia kekahi, ʻo Janus no mākou he pahu ʻeleʻele i kākau ʻia ma C, he mea pipiʻi loa ke kani ʻana me ia.

Mai Skype a i WebRTC: pehea mākou i hoʻonohonoho ai i ke kamaʻilio wikiō ma o ka pūnaewele

ʻAe, ma ke kaʻina hana mākou:

  • hōʻano hou i nā hilinaʻi āpau i hiki ke hoʻonui ʻia, ma ke kikowaena a me ka mea kūʻai aku (he mau hoʻokolohua hoʻi kēia, nānā mākou i nā hopena);
  • hoʻopaʻa i nā pōpoki i ʻike ʻia e pili ana i nā hihia kikoʻī, no ka laʻana, i ka wā i hāʻule ai ka pilina a ʻaʻole i hoʻihoʻi ʻia;
  • Ua mālama mākou i nā hālāwai he nui me nā hui e hana ana ma ke kahua o nā kamaʻilio wikiō a kamaʻāina i kā mākou mau pilikia: kahe ʻana i nā pāʻani, hoʻonohonoho i nā webinars; Ua ho'āʻo mākou i nā mea a pau i manaʻoʻia he pono iā mākou;
  • Hana ʻia ka loiloi ʻenehana o ka ʻenehana a me ka maikaʻi o ke kamaʻilio ʻana o nā kumu, nona ka nui o nā hoʻopiʻi.

ʻO nā hoʻokolohua a me nā hoʻololi hope i hiki ke hōʻemi i ka hauʻoli me ka kamaʻilio ma waena o nā kumu mai 7,1% i Ianuali 2018 a i 2,5% i Ianuali 2019.

He aha ka mea aʻe

ʻO ka hoʻopaʻa ʻana i kā mākou Vimbox platform kekahi o nā papahana nui o ka hui no 2019. Manaʻolana mākou e hiki iā mākou ke hoʻomau i ka manawa a ʻaʻole ʻike hou i ke kamaʻilio wikiō ma nā hoʻopiʻi kiʻekiʻe. Hoʻomaopopo mākou he ʻāpana koʻikoʻi o kēia mau hoʻopiʻi e pili ana i nā lag i nā kamepiula o nā mea hoʻohana a me ka Pūnaewele, akā pono mākou e hoʻoholo i kēia ʻāpana a hoʻoponopono i ke koena. ʻO nā mea ʻē aʻe he pilikia ʻenehana, me he mea lā e hiki iā mākou ke hoʻokō me ia.

ʻO ka paʻakikī nui ʻaʻole mākou ʻike i ka pae e hiki ai ke hoʻomaikaʻi i ka maikaʻi. ʻO ka ʻike ʻana i kēia kaupaku ka hana nui. No laila, ua hoʻolālā ʻia nā hoʻokolohua ʻelua:

  1. hoʻohālikelike i ka wikiō ma o Janus me ka p2p maʻamau i nā kūlana hakakā. Ua hoʻokō ʻia kēia hoʻokolohua, ʻaʻohe ʻokoʻa koʻikoʻi i ʻike ʻia ma waena o kā mākou solution a me p2p;
  2. E hoʻolako mākou i nā lawelawe (kūʻai) mai nā hui e loaʻa kālā wale nō ma nā hoʻonā kamaʻilio wikiō, a hoʻohālikelike i ka nui o nā negativity mai lākou me ka mea e kū nei.

ʻO kēia mau hoʻokolohua ʻelua e ʻae iā mākou e ʻike i kahi pahuhopu hiki ke hoʻokō a nānā aku iā ia.

Eia kekahi, aia kekahi mau hana i hiki ke hoʻoponopono maʻamau:

  • Hana mākou i kahi ʻenehana loea o ka maikaʻi kamaʻilio ma mua o nā loiloi kumuhana;
  • Hana mākou i nā moʻolelo kikoʻī o ka hālāwai i mea e nānā pono ai i nā hemahema i hiki mai, e hoʻomaopopo i ka wā a me kahi i hana ʻia ai, a me nā hanana like ʻole i pili i kēlā manawa;
  • Hoʻomākaukau mākou i kahi ho'āʻo maikaʻi pili pono ma mua o ka haʻawina, a hāʻawi pū i ka mea kūʻai aku i ka manawa e hoʻāʻo lima i ka pilina i mea e hōʻemi ai i ka nui o nā negativity i hoʻokumu ʻia e kāna lako a me ke kahawai;
  • e hoʻomohala a hana mākou i nā hoʻokolohua hoʻoili kamaʻilio wikiō hou aʻe i nā kūlana maikaʻi ʻole, me ka nalowale ʻana o ka packet variable, etc.;
  • hoʻololi mākou i ke ʻano o nā kikowaena inā pilikia e hoʻonui i ka hoʻomanawanui hewa;
  • E aʻo mākou i ka mea hoʻohana inā loaʻa kekahi hewa i kāna pilina, e like me Skype, i maopopo iā ia aia ka pilikia ma kona ʻaoʻao.

Mai ʻApelila, ua lilo ke alakaʻi kamaʻilio wikiō i papahana ʻokoʻa piha i loko o Skyeng, e pili ana i kāna huahana ponoʻī, ʻaʻole wale kahi ʻāpana o Vimbox. 'O ia ho'i ke ho'omaka nei mākou e 'imi i ka po'e ma hana me ka wikiō i ka manawa piha. ʻAe, e like me nā manawa a pau Ke ʻimi nei mākou i nā kānaka maikaʻi he nui.

A, ʻoiaʻiʻo, hoʻomau mākou e kamaʻilio ikaika me nā poʻe a me nā hui e hana pū ana me nā kamaʻilio wikiō. Inā makemake ʻoe e hoʻololi i ka ʻike me mākou, e hauʻoli mākou! Manaʻo, e hoʻopili - e pane mākou i nā mea a pau.

Source: www.habr.com