From ca1bdc9ee5af8a2d5f37811ff57f1de2289c143b Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Wed, 28 Jul 2021 15:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/config/wildfirechat.conf | 39 ++++++++++--------- .../java/io/moquette/BrokerConstants.java | 1 - .../main/java/io/moquette/server/Server.java | 2 +- .../src/main/resources/wildfirechat.conf | 39 ++++++++++--------- 4 files changed, 41 insertions(+), 40 deletions(-) diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index 01a25e64..453c37e2 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -11,13 +11,13 @@ #********************************************************************* #服务器的接入IP。给客户端提供是${server.ip}和${http_port}。 #客户端会从${http_port}端口获取到长链接端口。这个地址一定要改成客户端可以访问到的IP地址 -# (如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址) +#(如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址) server.ip 192.168.3.124 ##原生客户端长链接端口 port 1883 -##客户端短链接端口 +##客户端短链接端口,客户端固定使用80端口,不要修改此端口。 http_port 80 #管理端口 @@ -32,15 +32,15 @@ host 0.0.0.0 ##本地绑定端口 local_port 80 -##是否使用内置DB。0使用mysql;1使用h2db;2使用mysql+mongodb。社区版只支持0和1,专业版支持2 +##是否使用内置DB。0使用mysql;1使用h2db。 embed.db 1 ## 是否自动清理历史消息记录,当为true时,IM服务会定时扫描t_messages_x和t_user_messages_x表,清除掉3年前的历史消息。 ## 如果不开启自动清理,需要手动清理t_messages_x和t_user_messages_x表内的历史数据,保存数据不能超过3年。 -## 使用mongodb时次开关无效(因为mongodb设置了消息过期时间,会自动清理)。 +## 使用mongodb时次开关无效(因为mongodb设置了消息过期时间,会自动清理,仅专业版支持mongodb)。 db.auto_clean_history_messages true -##服务器管理接口密钥 +##服务器管理接口密钥。如果修改此端口需要同步修改使用管理API的地方,比如应用服务。 http.admin.secret_key 123456 ##服务器API接口参数是否检查时间。当设置为false时,所有的请求会检查时间的有效性;当设置为true时,可以在http.admin.secret_key保持不变的情况下,使用固定的服务API签名 @@ -78,14 +78,17 @@ message.disable_remote_search false ##如果要避免数据库中明文存储消息内容,请打开这个开关和message.disable_remote_search开关 message.encrypt_message_content false -##允许客户端撤回用户自己发送的消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 +##允许客户端撤回用户自己发送的消息时限,单位是秒。 +##Server API不受此限制,可以撤回任意时限内的消息 +##群组管理员或群主撤回群成员消息不受此限制,可以撤回任意时限内的消息。但管理员或群主撤回自己的消息还是需要准守此时间限制。 +##修改此参数需要同步修改客户端UI,客户端UI代码有判断撤回是否显示的逻辑。 message.recall_time_limit 120 -##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息,群主/群管理员撤回自己发送的消息还是会受到message.recall_time_limit时间限制。 +##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息。 message.disable_group_manager_recall false -## 禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 -## 一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 +##禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 +##一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 #message.forbidden_client_send_types 3999,4000,4001 ## 当禁止发送消息时,允许例外发送的消息。这种一般用户需要被动回应的消息。比如群中被禁言的用户,他无法主动发起音视频,但可以接听未被禁言用户的音视频 @@ -118,7 +121,7 @@ friend.request_expiration_duration 604800000 ##添加好友后会发送欢迎消息,比如"你们已经是好友了,可以聊天了"。这个开关控制是用旧的方式还是用新的方式。 ##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。 ##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。 -##如果客户端已经实现这两种消息可以打开这个开关 +##如果客户端已经实现这两种消息可以打开这个开关(客户端2020.6.30添加了此消息类型)。 friend.new_welcome_message true ## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出 @@ -146,16 +149,11 @@ group.visible_quit_or_kickoff_notification 0 # 因此需要分段多次同步,此开关定义了每次同步的数据的条数。此需要客户端支持,客户端SDK在2021.5.25日后支持此功能。如果确认所有客户端都在这个日志之后才可以打开此设置。 #sync.data_part_size 1000 -#********************************************************************* -# hazelcase configuration -#********************************************************************* -hazelcast.configuration config/hazelcast.xml - #********************************************************************* # Media server configuration #********************************************************************* ##是否使用七牛云存储。1使用七牛;0使用内存文件服务器。默认的七牛账户信息不可用,请在七牛官网申请账户并配置 -## https://docs.wildfirechat.cn/server/media_server.html +##配置使用七牛请参考:https://docs.wildfirechat.cn/server/media_server.html media.server.use_qiniu 0 ##媒体类型分类 @@ -200,8 +198,9 @@ local.media.storage.root media # 尽管内置文件存储可以使用,但是我们还是建议使用专业级别的对象存储服务,社区版可以使用七牛,专业版另外支持阿里云和也是私有对象存储。详情请参考 https://docs.wildfirechat.cn/server/oss.html # local.media.storage.remote_server_url https://example.com/media -# 是否支持多端登陆,为true时支持任意平台任意多个客户端同时登录;为false时每个平台只支持一个端登录,但不同平台可以同时登录。 +# 是否支持任意多端登陆,为true时支持任意平台任意多个客户端同时登录;为false时每个平台只支持一个端登录,但不同平台可以同时登录。 # Android/iOS为移动平台,windows/mac/linux为pc平台,web为web平台,小程序为小程序平台。 +# 建议使用false server.multi_endpoint false # 多平台连接状态通知(仅当multi_endpoint为false时有效),true时移动端可以收到pc或web端登录的通知。 @@ -226,6 +225,8 @@ push.ios.server.address http://localhost:8085/ios/push #********************************************************************* # 监控配置 #********************************************************************* +##异常事件产生回调 +##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #monitor.exception_event_address http://localhost:8888/im_exception_event/ #********************************************************************* @@ -285,7 +286,7 @@ sensitive.filter.type 0 #sensitive.remote_server_url http://192.168.3.202:8888/message/censor ## 需要进行敏感词审核的消息类型,当有多个时以英文逗号分割 #sensitive.remote_sensitive_message_type 1,2,3 -## 如果远程审核服务返回403,返回给发送端发送失败还是成功?实际上这个值影响发送响应是否等待审核结果,当为false时,消息发送给审核服务就立即返回 -## 成功给客户端。当为true时,消息发送给审核服务,等待审核结果,如果结果为继续发送就返回给客户端为成功,结果为禁止发送就返回失败给客户端。 +## 如果远程审核服务返回403,返回给发送端发送失败还是成功?实际上这个值影响发送响应是否等待审核结果,当为false时,消息发送给审核服务就立即返回成功给客户端。 +## 当为true时,消息发送给审核服务,等待审核结果,如果结果为继续发送就返回给客户端为成功,结果为禁止发送就返回失败给客户端。 ## 客户端操作的超时一般为10s左右,且考虑到复杂的网络情况,建议处理时间不要超过3s。建议这个值为false。 #sensitive.remote_fail_when_matched false diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index dabbc649..f574d7b2 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -49,7 +49,6 @@ public final class BrokerConstants { public static final String DISABLED_PORT_BIND = "disabled"; public static final String HOST = "0.0.0.0"; public static final String NEED_CLIENT_AUTH = "need_client_auth"; - public static final String HAZELCAST_CONFIGURATION = "hazelcast.configuration"; public static final String HAZELCAST_CLIENT_IP = "hazelcast.client.ip"; public static final String HAZELCAST_CLIENT_PORT = "hazelcast.client.port"; public static final String NETTY_SO_BACKLOG_PROPERTY_NAME = "netty.so_backlog"; diff --git a/broker/src/main/java/io/moquette/server/Server.java b/broker/src/main/java/io/moquette/server/Server.java index b3a0d65a..6d3fde2a 100755 --- a/broker/src/main/java/io/moquette/server/Server.java +++ b/broker/src/main/java/io/moquette/server/Server.java @@ -362,7 +362,7 @@ public class Server { LOG.info("Configuring embedded Hazelcast instance"); String serverIp = getServerIp(config); - String hzConfigPath = config.getProperty(BrokerConstants.HAZELCAST_CONFIGURATION); + String hzConfigPath = "config/hazelcast.xml"; String hzClientIp = config.getProperty(BrokerConstants.HAZELCAST_CLIENT_IP, "localhost"); String hzClientPort = config.getProperty(BrokerConstants.HAZELCAST_CLIENT_PORT, "5703"); diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index d21799a6..31554241 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -7,13 +7,13 @@ #********************************************************************* #服务器的接入IP。给客户端提供是${server.ip}和${http_port}。 #客户端会从${http_port}端口获取到长链接端口。这个地址一定要改成客户端可以访问到的IP地址 -# (如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址) +#(如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址) server.ip 0.0.0.0 ##原生客户端长链接端口。如果使用4层的反向代理或者类似组件,需要设置长链接保持时间为10分钟。 port 1883 -##客户端短链接端口 +##客户端短链接端口,客户端固定使用80端口,不要修改此端口。 http_port 80 #管理端口 @@ -28,15 +28,15 @@ host 0.0.0.0 ##本地绑定端口 local_port 80 -##是否使用内置DB。0使用mysql;1使用h2db;2使用mysql+mongodb。社区版只支持0和1,专业版支持2 +##是否使用内置DB。0使用mysql;1使用h2db。 embed.db 1 ## 是否自动清理历史消息记录,当为true时,IM服务会定时扫描t_messages_x和t_user_messages_x表,清除掉3年前的历史消息。 ## 如果不开启自动清理,需要手动清理t_messages_x和t_user_messages_x表内的历史数据,保存数据不能超过3年。 -## 使用mongodb时次开关无效(因为mongodb设置了消息过期时间,会自动清理)。 +## 使用mongodb时次开关无效(因为mongodb设置了消息过期时间,会自动清理,仅专业版支持mongodb)。 db.auto_clean_history_messages true -##服务器管理接口密钥 +##服务器管理接口密钥。如果修改此端口需要同步修改使用管理API的地方,比如应用服务。 http.admin.secret_key 123456 ##服务器API接口参数是否检查时间。当设置为false时,所有的请求会检查时间的有效性;当设置为true时,可以在http.admin.secret_key保持不变的情况下,使用固定的服务API签名 @@ -73,14 +73,17 @@ message.disable_remote_search false ##如果要避免数据库中明文存储消息内容,请打开这个开关和message.disable_remote_search开关 message.encrypt_message_content false -##允许客户端撤回用户自己发送的消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 +##允许客户端撤回用户自己发送的消息时限,单位是秒。 +##Server API不受此限制,可以撤回任意时限内的消息 +##群组管理员或群主撤回群成员消息不受此限制,可以撤回任意时限内的消息。但管理员或群主撤回自己的消息还是需要准守此时间限制。 +##修改此参数需要同步修改客户端UI,客户端UI代码有判断撤回是否显示的逻辑。 message.recall_time_limit 120 -##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息,群主/群管理员撤回自己发送的消息还是会受到message.recall_time_limit时间限制。 +##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息。 message.disable_group_manager_recall false -## 禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 -## 一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 +##禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 +##一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 #message.forbidden_client_send_types 3999,4000,4001 ## 当禁止发送消息时,允许例外发送的消息。这种一般用户需要被动回应的消息。比如群中被禁言的用户,他无法主动发起音视频,但可以接听未被禁言用户的音视频 @@ -112,7 +115,7 @@ friend.request_expiration_duration 604800000 ##添加好友后会发送欢迎消息,比如"你们已经是好友了,可以聊天了"。这个开关控制是用旧的方式还是用新的方式。 ##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。 ##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。 -##如果客户端已经实现这两种消息可以打开这个开关 +##如果客户端已经实现这两种消息可以打开这个开关(客户端2020.6.30添加了此消息类型)。 friend.new_welcome_message true ## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出 @@ -141,16 +144,11 @@ group.visible_quit_or_kickoff_notification 0 # 因此需要分段多次同步,此开关定义了每次同步的数据的条数。此需要客户端支持,客户端SDK在2021.5.25日后支持此功能。如果确认所有客户端都在这个日志之后才可以打开此设置。 #sync.data_part_size 1000 -#********************************************************************* -# hazelcase configuration -#********************************************************************* -hazelcast.configuration config/hazelcast.xml - #********************************************************************* # Media server configuration #********************************************************************* ##是否使用七牛云存储。1使用七牛;0使用内存文件服务器。默认的七牛账户信息不可用,请在七牛官网申请账户并配置 -## https://docs.wildfirechat.cn/server/media_server.html +##配置使用七牛请参考:https://docs.wildfirechat.cn/server/media_server.html media.server.use_qiniu 0 ##媒体类型分类 @@ -197,8 +195,9 @@ local.media.storage.root ./media # 尽管内置文件存储可以使用,但是我们还是建议使用专业级别的对象存储服务,社区版可以使用七牛,专业版另外支持阿里云和也是私有对象存储。详情请参考 https://docs.wildfirechat.cn/server/oss.html # local.media.storage.remote_server_url https://example.com/media -# 是否支持多端登陆,为true时支持任意平台任意多个客户端同时登录;为false时每个平台只支持一个端登录,但不同平台可以同时登录。 +# 是否支持任意多端登陆,为true时支持任意平台任意多个客户端同时登录;为false时每个平台只支持一个端登录,但不同平台可以同时登录。 # Android/iOS为移动平台,windows/mac/linux为pc平台,web为web平台,小程序为小程序平台。 +# 建议使用false server.multi_endpoint false # 多平台连接状态通知(仅当multi_endpoint为false时有效),true时移动端可以收到pc或web端登录的通知。 @@ -223,6 +222,8 @@ push.ios.server.address http://localhost:8085/ios/push #********************************************************************* # 监控配置 #********************************************************************* +##异常事件产生回调 +##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!! #monitor.exception_event_address http://localhost:8888/im_exception_event/ #********************************************************************* @@ -292,7 +293,7 @@ sensitive.filter.type 0 #sensitive.remote_server_url http://192.168.3.202:8888/message/censor ## 需要进行敏感词审核的消息类型,当有多个时以英文逗号分割 #sensitive.remote_sensitive_message_type 1,2,3 -## 如果远程审核服务返回403,返回给发送端发送失败还是成功?实际上这个值影响发送响应是否等待审核结果,当为false时,消息发送给审核服务就立即返回 -## 成功给客户端。当为true时,消息发送给审核服务,等待审核结果,如果结果为继续发送就返回给客户端为成功,结果为禁止发送就返回失败给客户端。 +## 如果远程审核服务返回403,返回给发送端发送失败还是成功?实际上这个值影响发送响应是否等待审核结果,当为false时,消息发送给审核服务就立即返回成功给客户端。 +## 当为true时,消息发送给审核服务,等待审核结果,如果结果为继续发送就返回给客户端为成功,结果为禁止发送就返回失败给客户端。 ## 客户端操作的超时一般为10s左右,且考虑到复杂的网络情况,建议处理时间不要超过3s。建议这个值为false。 #sensitive.remote_fail_when_matched false