一、谁有mqtt的pc端的客户端软件,能分享一下吗?如图
不会,除非客户端CLIENTID一致,在连接时会将上一个相同clientId的连接踢掉,并且会出现EOFException。windows同一台PC机上面使用MQTT协议连接服务端,最多也就1000过些,因为端口有限。目前我也在做这个,使用LINUX操作系统,调整句柄数,这样能连接的更多
二、国内有哪些不错的MQTT网关?
多比MQTT网关不错,我们单位也在使用,质量过关,稳定性也很好。还有
龙博也不错
三、怎么将消息发送到mqtt代理服务器
通过Cocoa Pods添加MQTTKit
MQTTKit在github上链接,down下来。
cd到工程目录,输入pod install,用xcode打开工程的打开xcworkspace扩展名的文件。
如果不是MQTTKit存在更新的版本,则输入pod update。
新建一个MQTT的服务请求
NSString *clientID = ...
MQTTClient *client = [[MQTTClient alloc] initWithClientId:clientID];
发送消息,每次发送消息包括目标host和本地MQTT消息.具体MQTT格式消息见代码。这里Host可以是Server的IP,不需要host表解析。
// connect to the MQTT server
[self.client connectToHost:@iot.eclipse.org
completionHandler:^(NSUInteger code) {
if (code == ConnectionAccepted) {
// when the client is connected, send a MQTT message
[self.client publishString:@Hello, MQTT
toTopic:@/MQTTKit/example
withQos:AtMostOnce
retain:NO
completionHandler:^(int mid) {
NSLog(@message has been delivered);
}];
}
}];
订阅主题并接受MQTT格式的消息,这部分在viewdidload中实现。
// define the handler that will be called when MQTT messages are received by the client
[self.client setMessageHandler:^(MQTTMessage *message) {
NSString *text = [message.payloadString];
NSLog(@received message %@, text);
}];
// connect the MQTT client
[self.client connectToHost:@iot.eclipse.org
completionHandler:^(MQTTConnectionReturnCode code) {
if (code == ConnectionAccepted) {
// when the client is connected, subscribe to the topic to receive message.
[self.client subscribe:@/MQTTKit/example
withCompletionHandler:nil];
}
}];
断开连接
[self.client disconnectWithCompletionHandler:^(NSUInteger code) {
// The client is disconnected when this completion handler is called
NSLog(@MQTT client is disconnected);
}];
整个连接建立、发送消息、接受消息、断开连接都是通过Block的消息机制来实现,因此需要对block有很好地理解。