GithubHelp home page GithubHelp logo

2881099 / freeim Goto Github PK

View Code? Open in Web Editor NEW
1.4K 54.0 419.0 80 KB

.NETCore websocket 实现简易、高性能、集群即时通讯组件,支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能.

License: MIT License

C# 81.47% HTML 17.27% Dockerfile 1.27%

freeim's Issues

IMServer怎么部署呢?

IMServer怎么部署需要怎么部署呢? 部署到 IIS 还是以服务方式运行, 怎么弄好点呢?

消息回执

大神,看到服务端转发消息的时候有个消息回执的功能,请问对于服务端来说,如何确定当前的消息发给了Receive端,且被Receive接收到了呢

Winform的ClientWebSocket始终联不上

ClientWebSocket client = new ClientWebSocket();
client.ConnectAsync(new Uri("ws://127.0.0.1:6001/ws?token=f5e2fdf65e5c4a1f9fc677c8a3e6b99ccd35347169084455a33d01af3fc350ba728e58799bc6434e8c3b9e82b206eddaa4a88d85150b4315856a5e6ecfd3543a"), CancellationToken.None).Wait() ;

联不上。不知道什么原因,求大佬 指点

我真有点搞不懂

在项目里打开本地调试,是正常的,可以正确使用。

但是发布了IMServe到本地之后,在我本地直接运行打开,端口死活是5000和50001
那么IMServer的appsettings.json配置的地址参数配置了还有用吗?
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",

"ImServerOption": {
"RedisClient": "127.0.0.1:6379,poolsize=10",
"Servers": "127.0.0.1:6001",//发布到服务器的时候,这里127.0.0.1我改成了我的IP地址
"Server": "127.0.0.1:6001"//发布到服务器的时候,这里127.0.0.1我改成了我的IP地址
}
}
配置文件的端口,无论我怎么改,只要我发布项目,然后运行exe文件,端口死活是2个,5000和50001(这是在本地直接打包发布运行的)
项目里我搜索出来的端口5000,也就只有WebApi里面有写,但是我改了,重新发布,还是端口死活是5000和50001

好了,等我把IMServer发布到服务器就是端口是一个5000,我配置文件怎么改都是5000,好吧,我认了, 我把webapi也改成5000,Redis是可以链接上(链接地址没动过,IP:6379,是可以访问的),但是IMServer服务死活链接不上。

这是什么情况呢

代码图片发不到这里。不然我发图了

引入Nuget包和直接拉源码,链接WebSocket问题

您好,我自己在之前使用Nuget包的时候,正常的一个使用没问题的,但是我从git上拉您的源码下来使用后,我前端链接Websocket时,后端就会说资源以释放,不可访问.想请教一下是需要哪里配置吗.

服务端应该怎么发布部署?

发布成web项目?
Exe文件?
Dll然后部署成服务?
看您写的可以发布成多个站点以支持高并发,是部署成web项目然后在IIS下运行么?

加载index.html的时候报错,好像是连不上websocket

index.html:66 WebSocket connection to 'ws://localhost:6001/ws?token=0279190161e143a690e949922cae5d3ea3b6d111c1ea4cc6aab00135502f47b1f6b6e20cc16e4745bcb146fc7a00a0228b6bef0dcb264f7898b63149deaa172e' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
index.html:89 websocket error
index.html:72 websocket disconnect
index.html:76 Uncaught ReferenceError: chan is not defined
at index.html:76

关于WSS的配置问题

目前已经把issue内关于wss配置的问题都看过一遍了,仍然出现如下问题(使用的是示例代码):
image

似乎是websocket连接没有建立,发送消息无法接收到

修改的配置项包括:

  1. Webapi、ImServer添加app.UseHttpsRedirection();
  2. launchSettings.jsonhttp修改为https
  3. ImClient60行将ws修改为wss

收不到消息

启动了imServer

启动了Web项目
查看redis也创建了房间,并且2个人员也有了
就是发送消息,双方都看不到?
这是什么问题呢?

发布server到服务器配置问题

"ImServerOption": {
"CSRedisClient": "118.25.209.177:26379,poolsize=5",
"Servers": "127.0.0.1:6001;127.0.0.1:6002",
"Server": "127.0.0.1:6001"
},
比如说我发布到 18.123.123.11 这个server 上。 "Servers": "127.0.0.1:6001;127.0.0.1:6002",
"Server": "127.0.0.1:6001" 这两个配置文件要改成 18.123.123.11:6001,18.123.123.11:6002吗?

关于几个小建议,请赐教

1.为什么SignalR不适合做im
我觉得主要的原因是能耗。很多协议不适合做im,除开兼容性问题之外,最主要的原因就是能耗。因为im需要保持长连接,耗电。
2.关于API群发
如果群发1000人,需要创建1000条消息吗?
这个分三种情况:
(1)群组消息
同一群组就订阅同一个Topic,消息就一条,但是推送至用户端还是需要1000次,别无他法。
(2)一类人(Tag相同)
可以借鉴群组的做法。
(3)真的就是无关联的1000人。
那只能创建1000条消息一一推送了。
以上是我的拙见,如有不对,请高手指正。

关于旧websocket连接释放问题

用户刷新聊天页面或者直接强关聊天页面,未正常close websocket,旧有的ws连接如何回收。
nginx部署Imserver以后ws默认超时是60s(心跳包保持活性),iis好像没有,没找到如何设置,有懂的大佬吗

在https方式下收不到消息

我有两个应用一个使用http 一个使用https 两个应用的用户socketId相同
http使用ws, https 方式连接wss,两个应用都可以正常连接imServer
http一切正常,
当使用https的应用时,连接服务器正常,就是收不到消息
此时,同时把http的应用浏览器打开并连接im,https的应用就可以正常收到消息了;如果把http应用连接关闭,就收不到消息
这是什么原因?期待回复

下线通知到在线客户端

上下线在 ImHelper.EventBus 获取到事件,上线的时候还可以用 ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了");
通知到在线客户端,
但是下线了,API 端怎么通知到在线客户端呢? ImHelper.SendMessage 有没有提供从服务器端发送的呢?

服务端出现多条上线、下线通知

服务端部署在云服务器上,项目在本地调试好好的,但项目发布到imserver所在服务器上后,用户上线、下线通知在服务端会看到很多条(第1次看到7条,关闭后重启服务和项目,看到10条)
5215

wss的问题

前端是https的, imserver是http可以码?

压测时候出现大量超时错误

日志是这样的:

fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.TimeoutException: SafeObjectPool.Get 获取超时(10秒)。
   at SafeObjectPool.ObjectPool`1.Get(Nullable`1 timeout)
   at CSRedis.CSRedisClient.GetAndExecute[T](RedisClientPool pool, Func`2 handler, Int32 jump, Int32 errtimes)
   at CSRedis.CSRedisClient.ExecuteScalar[T](String key, Func`3 hander)
   at CSRedis.CSRedisClient.HKeys(String key)
   at ImClient.GetChanListByClientId(Guid clientId) in D:\code\TT\001_src\im\ImCore\ImClient.cs:line 256
   at ImServer.Acceptor(HttpContext context, Func`1 next) in D:\code\TT\001_src\im\ImCore\ImServer.cs:line 116
   at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

是什么问题?

如何清理online表的无效数据?

似乎是因为im服务器意外停止(或者其他原因),客户端下线之后,server未能在online表删除对应记录,
重启Im服务器之后,出现很多假的在线用户,本想设置15s过期时间,然后用心跳不断延长过期来解决,
可online表无法单独设置每个clientId的过期时间

能否设计一个妥善的处理机制?

如何本地化?适配私人数据库

大佬,我看到代码内,是连接的别的IP地址。如何绑定到我自己的地址???如何将数据存入到我自己的数据库??。是否有相关的介绍或者文档来操作一下呢。。。可以加QQ嘛??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.