• Stars
    star
    373
  • Rank 114,600 (Top 3 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 8 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tim is a decentralized and distributed instant messaging engine

tim是一个分布式聊天服务器

  1. 支持im的基本功能。
  2. 支持群聊。
  3. 支持用户状态信息推送,"在线","离开"等。
  4. 支持消息回执.消息不丢失。
  5. 支持离线信息,聊天信息等存储与拉取。
  6. 通过协议拓展,可以支持视频,音频等通讯。
  7. 支持心跳检测异常断开的客户端,检测客户端验证超时等。
  8. 支持可配置的同一账号多客户端同时登陆。
  9. 可以配置关联其他数据库用户系统,tim可以独立于业务之外。
  10. 支持无数据库模式,此模式无法保存数据。
  11. 支持自定义消息类型,如发送位置,分享购物信息等。
  12. 支持分布式部署,服务器横向拓展。
  13. 支持TLS安全传输层协议。
  14. 支持hbase存储消息数据。

目前实现的客户端有java,golang,Obj-C,由于使用thrift作为传输协议,开发相对简单许多,大部分只是简单接口调用即可,协议拓展也相对容易许多。

实际应用场景:已在公司上线使用,原使用阿里悟空即时通讯,由于需求的增加,及部分消息类型需要定制,后来改用了tim即时通讯,基本可以满足当前以及以后的拓展需求。

支持分布式部署是tim的重要功能也是许多使用im的开发者关心的问题。经过一段时间的思考,决定采用最简单有效的方式:tim的集群非常简单,只需额外提供一个redis服务即可,每个tim节点会从redis服务上读取其他tim节点的信息,使用thrift协议在服务器之间进行信息交互。tim与redis的交换也非常简单,存,读,删,除redis命令以外如果还有逻辑,则采用lua完成。集群的数量没有限制,理论上可以无限的扩展。

tim服务器启动时需要指定配置文件
如 tim f tim.xml d debug c cluster.xml
f后跟基本配置文件tim.xml ; d后跟日志打印级别debug,info,warn,error等,可参考github.com/donnie4w/go-logger项目 ; c后跟集群文件cluster.xml

protocols文件夹中有几门语言的thrift协议,通过这协议可与服务器通信,通讯流程请在doc中查阅.

tim即时通讯项目虽然已经投入使用,但是目前的改动还是比较大,项目尚在不断完善当中!有任何建议或意见请随时email给我:[email protected] .谢谢!

体验demo
另外tim提供了windows环境的两个可执行文件,有兴趣的人可以玩一下,server.exe与client.exe。启动请看命令说明,主要是用户登录发送信息,状态信息等简单的体验。没有上下线的通知是由于用户关系没有建立。

v1.1

版本开始支持Hbase存储;对消息量比较大的服务,可以使用Hbase存储数据,hbase版本要求0.98以上,需开启hbase的thrift2服务。

客户端:

  1. java:https://github.com/donnie4w/atim
  2. go:https://github.com/donnie4w/timgo
  3. Obj-C:https://github.com/3990995/tim-objc
  4. kotlin:https://github.com/donnie4w/timkotlin

More Repositories

1

go-logger

go高性能日志库, 支持日志格式化, 文件切割,压缩等特性
Go
273
star
2

wfs

WFS File Storage System
Go
224
star
3

dom4g

golang 的 xml 处理库
Go
52
star
4

zkfire

zkfire是openfire的一套集群实现
46
star
5

tklog

lightweight and efficient rust structured log library with support for log levels, file segmentation, compressed archiving
Rust
43
star
6

tldb

distributed database
Go
34
star
7

json4g

json4g 是json 处理库,方便处理结构复杂的json文档
Go
32
star
8

jdao

Java Orm Framework
Java
24
star
9

gdao

Go Orm Framework
Go
23
star
10

webtim

web im projects implemented using timjs in tim
JavaScript
17
star
11

timgo

tim client in go
Go
13
star
12

atim

tim client in java
Java
11
star
13

wfs-jclient

wfs client in java
Java
8
star
14

tlmq-j

mq client for tldb
Java
7
star
15

wfs-goclient

wfs client in go
Go
6
star
16

tlmq-go

tldb mq client
Go
5
star
17

wfs4k

wfs的kotlin实现版本
Kotlin
5
star
18

webtim-deploy

webtim的各个操作系统本地部署脚本
4
star
19

dbware

数据库代理服务器
Java
3
star
20

gofer

tool library for go
Go
2
star
21

wfs4j

wfs的java实现版本
Java
2
star
22

Tim-Practical-Article

tim实践系列文章
2
star
23

wfs-rsclient

wfs client in rust
Rust
2
star
24

thriftjson

让thrift兼容原生json数据调用的解决方案
Java
2
star
25

jdaodemo

Jdao Test Demo
Java
1
star
26

gdaodemo

gdao test demo
Go
1
star
27

timkotlin

tim服务的kotlin客户端
Kotlin
1
star
28

simplelog

Fast, simple logging in go
Go
1
star
29

jedisproxy

jedisproxy 是对jedis的一层封装,主要对获取客户端操作对象,释放资源操作做了一层封装 让代码更加简洁
Java
1
star
30

ethchat

chat contracts based on solidity
Solidity
1
star
31

admintim

management interface for tim in python
Python
1
star
32

tlorm-go

go orm for tldb database
Go
1
star
33

timjs

tim client in javascript
JavaScript
1
star
34

tim-protocol

protocol of tim by the popular programming language
C
1
star
35

videojoin

js achieve video can be played continuously
JavaScript
1
star
36

tlnet

http service framework
Go
1
star
37

wfs-pyclient

wfs client in python
Python
1
star