redis dart抛出SocketException

redis dart抛出SocketException,dart,Dart,我试图让一个例子从工作,但我不断得到以下错误。你知道我为什么会得到这个吗 未处理的异常:未捕获错误:SocketException:操作系统错误:远程计算机拒绝了网络连接 导入'dart:io'; 导入“dart:async”; 导入“dart:集合”; 导入“package:redis/redis.dart”; main(){ 重新连接conn1=新的重新连接(); 重新连接conn2=新的重新连接(); Command命令;//在conn1上 pubsub命令pubsub;//在conn2

我试图让一个例子从工作,但我不断得到以下错误。你知道我为什么会得到这个吗

未处理的异常:未捕获错误:SocketException:操作系统错误:远程计算机拒绝了网络连接

导入'dart:io';
导入“dart:async”;
导入“dart:集合”;
导入“package:redis/redis.dart”;
main(){
重新连接conn1=新的重新连接();
重新连接conn2=新的重新连接();
Command命令;//在conn1上
pubsub命令pubsub;//在conn2上
int test1cnt=3;//应为3条消息
int test2cnt=1;//应为1条消息
var testmessages=[[“发布”、“aaa”、“aa”],
[“发布”、“bbb”、“bb”],
[“发布”、“ccc”、“cc”];
返回conn1.connect('127.0.0.1',6379)。然后((命令cmd){
command=cmd;
返回连接2.连接('127.0.0.1',6379);
}).then((命令cmd){
pubsub=新的pubsub命令(cmd);
pubsub.psubscribe([“a*”、“b*”、“c*”]);
//测试1
pubsub.getStream().listen((msg){
for(testmessages中的var m){
如果(消息[2]==m[1]){
test1cnt--;
回来
}
}
扔(“没有得到味精”);
});
//测试2
pubsub.getStream(“a*”).listen((msg){
for(testmessages中的var m){
如果(消息[2]==m[1]){
test2cnt--;
回来
}
}
扔(“没有得到味精”);
});
}).然后(){
for(testmessages中的var msg){
command.send_对象(msg);
}
Completer comp=新的Completer();
计时器超时=新计时器(新持续时间(秒:1),(){
conn1.close();
conn2.close();
如果((test1cnt==0)和&(test2cnt==0)){
公司完成(“正常”);
}否则{
comp.completeError(“未获得已验证的邮件数”);
}
});
回报公司未来;
});
}
//要检查的辅助函数
//如果流数据与提供的测试数据相同
未来测试记录消息(流s,列表l){
var it=l.迭代器;
返回s
.取(长)
.every((v)=>it.moveNext()&&(it.current.toString()==v.toString());
}
未来测试_pubsub2(){
Command Command;//在conn1上发送命令
Stream pubsubstream;//在conn2上连接到rec c
重新连接连接=新的重新连接();
返回conn.connect('127.0.0.1',6379)。然后((命令cmd){
command=cmd;
重新连接连接=新的重新连接();
返回连接('127.0.0.1',6379);
}).then((命令cmd){
PubSubCommand pubsub=新的PubSubCommand(cmd);
pubsub.subscribe([“monkey”]);
pubsubstream=pubsub.getStream();
return pubsubstream;//TODO fix逻辑正确,不工作
}).然后(){
//巴斯西等着普雷弗斯下床
返回未来。doWhile(){
返回命令。发送对象([“PUBSUB”、“NUMSUB”、“monkey”])
。然后((v)=>v[1]==0);
}).然后(){
//在这一点上,一个被签署
返回命令。发送对象([“发布”、“猴子”、“香蕉”])
。然后((\u)=>command.send\u对象([“发布”、“猴子”、“花生”))
。然后(()=>command.send_对象([“发布”、“狮子”、“斑马”));
});
}).然后(){
var expect=[“消息”、“猴子”、“香蕉”]、[“消息”、“猴子”、“花生”];
返回测试记录消息(pubsubstream,expect)
.然后((布尔r){
如果(r!=真)
抛出“错误测试2”;
});
});
}
未来测试性能(int N){
Command Command;//在conn1上发送命令
Stream pubsubstream;//在conn2上连接到rec c
int启动;
重新连接连接=新的重新连接();
返回conn.connect('127.0.0.1',6379)。然后((命令cmd){
command=cmd;
重新连接连接=新的重新连接();
返回连接('127.0.0.1',6379);
}).then((命令cmd){
PubSub PubSub=新的PubSub(cmd);
pubsub.subscribe([“monkey”]);
pubsubstream=pubsub.getStream();
回流子流;
}).然后(){
//巴斯西等着普雷弗斯下床
返回未来。doWhile(){
返回命令。发送对象([“PUBSUB”、“NUMSUB”、“monkey”])
。然后((v)=>v[1]==0);
}).然后(){
//在这一点上,一个被签署
start=new DateTime.now().millissecondssinceepoch;

对于(int i=0;i您确定服务器接受此接口和端口的连接吗?这是示例中的设置,因此我希望它能接受。例如,您可以使用
telnet 127.0.0.1:6379
尝试,或者使用
netstat
检查是否侦听端口(取决于操作系统)是的,我在列表上没有看到。所以我猜我应该启动一个redis服务器来监听连接?我希望我可以检查网络上的其他服务器,如果它们拥有相同类型的授权密钥,就与它们通信。如果这不能做到,有没有一个可以做到?我不知道redis,但是如果你连接到
127.0.0.1:6379
必须有一个服务监听和接受连接,否则你就倒霉了。如果其他地方有Redis服务,你当然可以在那里连接,但IP和端口必须调整。