# Tinode ì¸ì¤í´í¸ ë©ìì§ ìë²
## This document is outdated. For up to date info use [README.md](./README.md)
ì¸ì¤í´í¸ ë©ìì§ ìë². C++, C#, [Go](http://golang.org), Java, Node, PHP, Python, Ruby, Objective-C ë±ì ëí [gRPC](https://grpc.io/) í´ë¼ì´ì¸í¸ ì§ìì ë¬¼ë¡ ììGo(ë¼ì´ì ì¤ [GPL 3.0](http://www.gnu.org/licenses/gpl-3.0.en.html))ì ë°±ìëì Java,Javasript ë° Swiftì í´ë¼ì´ì¸í¸ 측 ë°ì¸ë©(ë¼ì´ì ì¤ [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)). ìì´ì´ ì ì¡ì ì¬ì©ì ì ì ë°ì¸ë©ì ìí´ ì¹ìì¼ì íµí JSON(롱 í´ë§ë ê°ë¥) ì¦, gRPCì [protobuf](https://developers.google.com/protocol-buffers/). ì구 ì ì¥ì [RethinkDB](http://rethinkdb.com/), MySQL ë° MongoDB(ì¤íì ). ì§ìëì§ ìë íì¬ [DynamoDB adapter](https://github.com/riandyrn/chat/tree/master/server/db/dynamodb) adapterë ììµëë¤. ì¬ì©ì ì ì ì´ëí°ë¥¼ ìì±íì¬ ë¤ë¥¸ ë°ì´í°ë² ì´ì¤ë¥¼ ì§ìí ì ììµëë¤.
Tinodeë XMPP/ Jabber ê° ìëëë¤. Tinodeë XMPPì í¸íëì§ ììµëë¤. XMPP를 ëì²´í기 ìí ê²ì
ëë¤. íë©´ì ì¼ë¡ë ì¤íìì¤ WhatsApp ëë Telegramê³¼ ë§¤ì° ì ì¬í©ëë¤.
ë²ì 0.16ì ë² í ê¸ ìíí¸ì¨ì´ì
ëë¤. 기ë¥ì ìì íì§ë§ ëª ê°ì§ ë²ê·¸ê° ììµëë¤. ìë í´ë¼ì°ë ìë¹ì¤ ì¤ íë를 ì¤ì¹ ë° ì¤ííê±°ë ì¬ì©íë ¤ë©´ [ì§ìì¬í](INSTALL.md)ì ë°ë¥´ììì¤. [API ì¤ëª
ì](docs/API.md)를 ì½ì¼ììì¤.
## Why?
[XMPP](http://xmpp.org/)ì ì½ìì ì°í©ë ì¸ì¤í´ì¤ ë©ìì§ì ì ê³µíë ê²ì
ëë¤. ë구ë ì ì¸ê³ì ë¤ë¥¸ XMPPìë²ì ë©ìì§ë¥¼ êµíí ì ìë IM ìë²ë¥¼ ê°ëí ì ììµëë¤. ë¶ííê²ë, XMPPë ì´ ì½ìì ì´ííì§ ìììµëë¤. ì¸ì¤í´í¸ ë©ì ì ë¤ì 1990ë
ë íë°ì AoLê³µê° ì¸í°ë·ê³¼ ë¹ì·í, ì립í ì ìë ë²½ì¼ë¡ ëë¬ì¸ì¸ ì ìì 무리ë¤ì
ëë¤.
ì´ íë¡ì í¸ì 목íë XMPPì ìë ë¹ì ì¸ ëª¨ë°ì¼ íµì ì ê°ì¡°íì¬ ì°í© ì¸ì¤í´í¸ ë©ìì§ì ìí íëì ì¸ ê°ë°©í íë«í¼ì ë§ëë ê²ì
ëë¤. ë ë²ì§¸ 목íë ì ë¶ê° ì¶ì íê³ ì°¨ë¨í기 í¨ì¬ ì´ë ¤ì´ ë¶ì°í IMíë«í¼ì ë§ëë ê²ì
ëë¤.
XMPP: XMLì 기ë°í ë©ìì§ ì§í¥ íµì íë¡í ì½
IM: Instant Messanger
## ì¤ì¹ ë° ì¤í
[ì¼ë° ì§ì¹¨](./INSTALL.md) ëë [ëì»¤ë³ ì§ì¹¨](./docker/README.md)ì 참조íììì¤.
## ì§ìë°ê¸°
* [API ì¤ëª
ì](docs/API.md) ë° [FAQ](docs/faq.md)를 ì½ì¼ììì¤.
* ì§ì, ì¼ë°ì ì¸ ì§ë¬¸, í ë¡ì[https://groups.google.com/d/forum/tinode](https://groups.google.com/d/forum/tinode).ì ê²ìíììì¤.
* ë²ê·¸ ë° ê¸°ë¥ ìì²ì ëí´ìë [issue](https://github.com/tinode/chat/issues/new)를 ì¬ììì¤.
## 공공ìë¹ì¤
[Tinode 공공 ìë¹ì¤](https://web.tinode.co/)ë ì§ê¸ ë°ë¡ ì¬ì©í ì ììµëë¤. ë¤ë¥¸ ë©ì ì ë¤ì²ë¼ ì¬ì©íë©´ ë©ëë¤. [ìëë°ì¤](https://sandbox.tinode.co/)ì ìë ë°ëª¨ ê³ì ì 공공 ìë¹ì¤ìì ì¬ì©í ì ììµëë¤. ìë¹ì¤ë¥¼ ì´ì©íë ¤ë©´ ì í¨í ì´ë©ì¼ì ì¬ì©íì¬ ê³ì ì ë±ë¡í´ì¼ í©ëë¤.
### ì¹
Tinodeì¹ì ë¨ì¼ íì´ì§ì ì¹ì¼ë¡ https://web.tinode.co/ ([ì본](https://github.com/tinode/webapp/))ìì ì´ì©ì´ ê°ë¥í©ëë¤. . ìëì ìë ì¤í¬ë¦° ì·ì ì°¸ê³ íì¸ì. íì¬ ìì´, ì¤êµì´ ê°ì²´, ë¬ììì´ë¥¼ ì§ìí©ëë¤. ë ë§ì ë²ìì íìí©ëë¤.
### ìëë¡ì´ë
Tindroidë¼ê³ ë¶ë¦¬ë [ìëë¡ì´ë ë²ì ì Tinode](https://play.google.com/store/apps/details?id=co.tinode.tindroidx) ë ìì ì ì¼ë¡ ê°ëë©ëë¤. ([ì본](https://github.com/tinode/tindroid)). ìëì ìë ì¤í¬ë¦° ì·ì ì°¸ê³ íì¸ì. í¸ì를 ìí´ [ëë²ê·¸ APK](https://github.com/tinode/tindroid/releases/latest)ë ì ê³µí©ëë¤. íì¬ ìì´, ì¤êµì´ ê°ì²´, ë¬ììì´ë¥¼ ì§ìí©ëë¤. ë ë§ì ë²ìì íìí©ëë¤.
### iOS
Tinodiosë¼ê³ ë¶ë¦¬ë [iOS ë²ì ì Tinode](https://apps.apple.com/app/reference-to-tinodios-here/id123) ìì ì ì¼ë¡ ê°ëë©ëë¤.([ì본](https://github.com/tinode/ios)). ìëì ìë ì¤í¬ë¦°ì·ì ì°¸ê³ íì¸ì. íì¬ ìì´ì ì¤êµì´ ê°ì²´ë¥¼ ì§ìí©ëë¤. ë ë§ì ë²ìì íìí©ëë¤.
## ë°ëª¨/ìëë°ì¤
ìëë°ì¤ ë°ëª¨ ë²ì ì https://sandbox.tinode.co/ ìì ì´ì© ê°ë¥í©ëë¤.
alice, bob, carol, dave, frank ì¤ íëë¡ ë¡ê·¸ì¸í ì ììµëë¤. ë¹ë°ë²í¸ë <ì´ë¦>123ì¼ë¡ ì를 ë¤ì´, aliceì ë¹ë°ë²í¸ë alice123ì
ëë¤. ì¬ì©ì ì´ë¦ì 맨 ììì´ <ì´ë¦>@example.com íìì ì´ë©ì¼ì´ë +17025550001 ë¶í° +17025550009ì ì íë²í¸ë¥¼ ì´ì©í´ì ë¤ë¥¸ ì¬ì©ìë¤ì ì°¾ì ì ììµëë¤.
ìë¡ì´ ê³ì ì ë±ë¡íë©´ ì í¨ì± ê²ì¬ ì½ë를 ë³´ë¼ ì´ë©ì¼ 주ì를 묻ë ë©ìì§ê° ëíë©ëë¤. ë°ëª¨ì 목ì ì¼ë¡ 123456ì ë²ì© ì í¨ì± ê²ì¬ ì½ëë¡ ì¬ì©í ì ììµëë¤. ì¤ì ì´ë©ì¼ë¡ ë°ì ì½ëë ì í¨í©ëë¤.
### ìëë°ì¤ ë
¸í¸
* ìëë°ì¤ ìë²ë ííì íì¤ì ê¸°ì¤ ë§¤ì¼ ì¤ì 3ì 15ë¶ì ì´ê¸°íë©ëë¤(모ë ë°ì´í°ê° ì§ìì§). ì¬ì©ì를 ì°¾ì ì ììµëë¤ ëë ì¤íë¼ì¸ ê°ì ì¤ë¥ ë©ìì§ë ìë²ì ì°ê²°íë ëì ìë²ê° ì´ê¸°í ëììì ì미í©ëë¤. ë§ì½ í´ë¹ ì¤ë¥ ë©ìì§ê° íìëë©´ ìë¡ê³ 침 í ë¤ì ë¡ê·¸ì¸ íì¸ì. ìëë¡ì´ëìì ë¡ê·¸ìì í ë¤ì ë¡ê·¸ì¸ íì¸ì. ë§ì½ ë°ì´í°ë² ì´ì¤ê° ë³ê²½ë ê²½ì°ìë ì±ì ìì íë¤ê° ë¤ì ì¤ì¹íë©´ ë©ëë¤.
* ìëë°ì¤ ì ì Tinoë [기본ì ì¸ ì±ë´](./chatbot)ì¼ë¡ 모ë ë©ìì§ì [ììì ì¸ì©êµ¬](http://fortunes.cat-v.org/)ë¡ ìëµí©ëë¤.
* ì¼ë°ì ì¼ë¡ ìë¡ì´ ê³ì ì ë±ë¡íë©´ ì´ë©ì¼ 주ì를 묻ë ë©ìì§ê° íìë©ëë¤. ìë²ë ì í¨ì± ê²ì¬ ì½ëê° í¬í¨ë ë©ì¼ì ë³´ë´ë©° ì´ë¥¼ ì¬ì©íì¬ ê³ì ì ê²ì¦íë ë° ì¬ì©í ì ììµëë¤. í
ì¤í¸ë¥¼ ë³´ë¤ ì½ê² í ì ìëë¡ ìë²ë ì í¨ì± ê²ì¬ ì½ëë¡ 123456ì ëí íì©í©ëë¤. Tinode.confìì âdebug_responseâ: â123456âíì ì ê±°íì¬ ì´ ìµì
ì ë¹íì±í ìí¬ ì ììµëë¤.
* ìëë°ì¤ ìë²ë [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication)ì ëí íë ì½ë©ë ì구ì¬íê³¼ í¨ê» [ACME](https://letsencrypt.org/) TLS [구í](https://godoc.org/golang.org/x/crypto/acme)ì ì¬ì©íëë¡ êµ¬ì±ëììµëë¤. ë§ì½ ì°ê²°í ì ìì ê²½ì° TLS í´ë¼ì´ì¸í¸ì SNI ì§ì ëë½ì¼ ê°ë¥ì±ì´ ëìµëë¤. ê·¸ ê²½ì° ë¤ë¥¸ í´ë¼ì´ì¸í¸ë¥¼ ì¬ì©íì¸ì.
* 기본 ì¹ ì±ì íëì ì¶ìë ìë°ì¤í¬ë¦½í¸ ë²ë¤ê³¼ ì¶ìë CSS를 ê°ì ¸ìµëë¤. ì¶ìëì§ ìì ë²ì ì https://sandbox.tinode.co/index-dev.html ììë ì ê³µë©ëë¤.
* ë°ëª¨ê° ê°ì [ë커 ì´ë¯¸ì§](https://hub.docker.com/u/tinode/)ë ì¬ì© ê°ë¥í©ëë¤.
* ìëë°ì¤ì ëí´ ìíí¸ì¨ì´ë¥¼ í
ì¤í¸íê³ í´í¹íë ìì
, 기í ìì
ë¤ì ìíí ì ììµëë¤. DDosë ì ë ì¬ì©íì§ ë§ì¸ì.
## í¹ì§
### ì§ì 기ë¥
* [Android](https://github.com/tinode/tindroid/), [iOS](https://github.com/tinode/ios), [web](https://github.com/tinode/webapp/), ê·¸ë¦¬ê³ [command line](tn-cli/) í´ë¼ì´ì¸í¸.
* 1ë1 ë©ìì§.
* 모ë 구ì±ìì ì ê·¼ ê¶íì ê°ì§ 그룹 ë©ìì§ì ê°ë³ì ì¼ë¡ ê´ë¦¬íë¤. ìµë 구ì±ì ìë ì¤ì í ì ìë¤(기본ì ì¼ë¡ 128ëª
).
* ë¤ìí ìì
ì ëí ê¶íì ê°ì§ í목 ì¡ì¸ì¤ ì ì´
* ìë²ìì ìì±í ì¬ì©ì ë° ì£¼ì ì ëí ì¡´ì¬ ì림.
* ë§ì¶¤í ì¸ì¦ ì§ì
* failover를 íµí Sharded clustering
* ì구 ë©ìì§ ì ì¥ì, íì´ì§ê° ì§ì ë ë©ìì§ ê¸°ë¡
* ì¸ë¶ ìì¡´ì±ì´ ìë javascript ë°ì¸ë©.
* Android SDK dependencies.Java ë°ì¸ë©(ìì¡´ì±: [Jackson](https://github.com/FasterXML/jackson), [Java-Websocket](https://github.com/TooTallNate/Java-WebSocket)). Androidì ì í©íì§ë§ Android SDK ì¢
ìì±ì´ ìì.
* TCP ëë Unix ìì¼ì íµí Webocket, long polling, ë° [gRPC](https://grpc.io/).
* JSON ëë[protobuf ë²ì 3](https://developers.google.com/protocol-buffers/) ìì´ì´ íë¡í ì½.
* [ìí¸í](https://letsencrypt.org/) ëë 기존 ì¸ì¦ì를 ë´ì¥í [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) ìµì
* ì¬ì©ì ê²ì/ë°ê²¬.
* íë¶í ë©ìì§ íì, ë§í¬ë¤ì´ ì¤íì¼: \*style\* → **style**.
* ì¸ë¼ì¸ ì´ë¯¸ì§ ë° ì²¨ë¶ íì¼.
* ì±ë´ì ì í©í ìì ë° í
íë¦¬í¸ ìëµ.
* ë©ìì§ ìí ì림: ìë²ë¡ ë©ìì§ ì ë¬; ìì ë° ì½ê¸° ì림; ì
ë ¥ ì림.
* í´ë¼ì´ì¸í¸ 측 ë°ì´í° ìºì± ì§ì.
* ìíì§ ìë íµì ìë²ë¥¼ ì°¨ë¨íë 기ë¥.
* ìµëª
ì¬ì©ì(ëí ì¤ ê¸°ì ì§ì ê´ë ¨ ì¬ì© ì¬ë¡ì ì¤ìì±).
* [FCM](https://firebase.google.com/docs/cloud-messaging/) ëë [TNPG](server/push/tnpg/)를 ì¬ì©íì¬ ì림ì í¸ì.
* ë¡ì»¬ íì¼ ìì¤í
ëë Amazon S3를 ì¬ì©íì¬ ë¹ëì¤ íì¼ê³¼ ê°ì ëí ì¤ë¸ì í¸ì ì ì¥ ë° ëì ì¸ ì ì¡.
* ì±ë´ì íì±íí기 ìí´ ê¸°ë¥ì íì¥íë íë¬ê·¸ì¸.
### ê³í
* [ì°ë°©(ì°í©,ì°ë§¹)](https://en.wikipedia.org/wiki/Federation_(information_technology)).
* ì¼ëì¼ ë©ìì§ì ìí [OTR](https://en.wikipedia.org/wiki/Off-the-Record_Messaging)ê³¼ 그룹 ë©ìì§ì ìí 미íì ë°©ë²ì¼ë¡ End to end ìí¸í.
* bearer token ì¡ì¸ì¤ ì ì´ë¥¼ ê°ì§ 무ì í íì(ëë ììë§ ëª
)ì 그룹 ë©ìì§.
* ìë ìë¹ ìì¤í
.
* ë©ìì§ ì§ìì± ë¤ë¥¸ ìì¤(ì격í ì§ìì±ë¶í° "ì ë¬ë ëê¹ì§ ì ì¥"ê¹ì§, ìì í 짧ì ë©ìì§ê¹ì§).
### ë²ì
모ë í´ë¼ì´ì¸í¸ ìíí¸ì¨ì´ë êµì í를 ì§ìíë¤. ë²ìì ìì´, ì¤êµì´ ê°ì²´, ë¬ììì´(iOS ì ì¸)ì ì ê³µëë¤. ë ë§ì ë²ìì íìíë¤. í¹í ì¤íì¸ì´, ìëì´, ë
ì¼ì´, í르ììì´, ì¸ëë¤ììì´, í¬ë¥´í¬ê°ì´, íëì´, 벵골ì´ì ê´ì¬ì´ ë§ë¤.
## íì¬ ë¼ì´ì ì¤
* ë°ëª¨ ìë°íì ì¼ë¶ ë¤ë¥¸ ê·¸ëí½ì [CC0](https://www.pexels.com/photo-license/) ë¼ì´ì¼ì¤ì ë°ë¼ https://www.pexels.com/ìì ì ê³µëë¤.
* ì¹ ë° ìëë¡ì´ë ë°°ê²½ í¨í´ì [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) ë¼ì´ì¼ì¤ì ë°ë¼ http://subtlepatterns.com/ ìì ì ê³µëë¤.
* Android ìì´ì½ì [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0.html) ë¼ì´ì¼ì¤ì https://material.io/tools/icons/ ìì ì ê³µëë¤.
* ì¼ë¶ iOS ìì´ì½ì [CC BY-ND 3.0](https://icons8.com/license) ë¼ì´ì¼ì¤ì ë°ë¼ https://icons8.com/ ìì ì ê³µëë¤.
## ì¤í¬ë¦°ì·
### [ìëë¡ì´ë](https://github.com/tinode/tindroid/)