前言
synapse是一款优秀的开源聊天框架,github地址https://github.com/matrix-org/synapse
centos服务器部署
我是参考博客
如果对外提供https服务,需要提供tls证书,参考
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
将两个pem文件上传,并按照官方文档 修改配置homeserver.yaml
#取消注释
- port: 8448
type: http
tls: true
resources:
- names: [client, federation]
#配置证书
tls_certificate_path: "/root/synapse/ca.pem"
tls_private_key_path: "/root/synapse/privatekey.pem"
启动服务
source env/bin/activate
synctl start
网页客户端体验
客户端网址可能被墙
登录https://app.element.io/#/login
主界面默认matrix.org服务器,点击Edit,选择自己部署服务器的网址 https://118.195..:8448
然后注册登录
SDK
官网SDK汇总
.NET standard 2.0 library
官网API文档
sdk只提供基本功能,比如没有注册只有登录。缺省的功能就得去查API文档,然后自己调用http接口
例如注册,参考API文档Register Users
先Post http://118.195.212.43:8008/_matrix/client/v3/register
{
"session": "FBiHORITNyEHaLvzfhOZqjzI",
"flows": [
{
"stages": [
"m.login.dummy"
]
}
],
"params": {}
}
得到session,再对同样的url请求并带上body,完成注册
Post http://118.195.212.43:8008/_matrix/client/v3/register
postman Body选择raw Json格式
{
"auth": {
"example_credential": "verypoorsharedsecret",
"session": "FBiHORITNyEHaLvzfhOZqjzI",
"type": "m.login.dummy"
},
"device_id": "GHTYAJCE",
"initial_device_display_name": "Jungle Phone",
"password": "operhero",
"username": "mima"
}
之后利用SDK进行登录及其他操作
var factory = new MatrixClientFactory();
IMatrixClient client = factory.Create();
client.LoginAsync(new Uri("http://118.195.212.43:8008"), "operhero", "mima", "BGQKOUZODN").Wait();
client.OnMatrixRoomEventsReceived += (sender, eventArgs) =>
{
foreach (BaseRoomEvent roomEvent in eventArgs.MatrixRoomEvents)
{
if (roomEvent is not TextMessageEvent textMessageEvent)
continue;
(string roomId, string senderUserId, string message) = textMessageEvent;
if (client.UserId != senderUserId)
Console.WriteLine($"RoomId: {roomId} received message from {senderUserId}: {message}.");
}
};
client.Start();
总结
synapse是基于长轮询,开房间的思想。私聊也是利用两个人开房间的思想实现。长轮询可以阅读syncing