小编Eri*_*ill的帖子

Node.js和socket.io的Redis auth错误

我可以将我的Node应用程序连接到Redis,没有密码,但是当我添加密码时,我所做的一切都是正确的.

这是我的代码,正好从一个例子:

var redis = require('redis')
  , sio = require('socket.io')
  , RedisStore = sio.RedisStore
  , io = sio.listen();

var port = 6379
  , hostname = 'localhost'
  , password = 'password';

var redisClient = redis.createClient(port, hostname);
redisClient.auth(password, function (err) { if (err) throw err; });

var redisSubscriber = redis.createClient(port, hostname);
redisSubscriber.auth(password, function (err) { if (err) throw err; });

io.set('store', new RedisStore({ redisPub: redisClient, redisSub: redisSubscriber, redisClient: redisClient }));
Run Code Online (Sandbox Code Playgroud)

在运行应用程序时,我得到了这个堆栈跟踪:

/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:506
                throw callback_err;
                      ^
Error: Ready check failed: ERR …
Run Code Online (Sandbox Code Playgroud)

redis node.js socket.io

7
推荐指数
1
解决办法
5966
查看次数

检测ListView(或ScrollView)中的滚动位置

我正在构建一个聊天室应用程序,每隔X秒轮询一次新事件.每次发生这种情况时,此代码都会使用新数据更新RoomAdapter(ArrayAdapter的自定义子类)并将其滚动到底部:

RoomAdapter adapter = (RoomAdapter) getListAdapter();
for (int i=0; i<newEvents.size(); i++)
 adapter.add(newEvents.get(i));
getListView().setSelection(events.size()-1);
Run Code Online (Sandbox Code Playgroud)

这很好,除了如果用户向上滚动以浏览房间的历史记录,它将在轮询发生时将她跳到底部.我想要做的是,如果用户已经在列表的底部,那么在对新事件进行轮询之后,它就会停留在那里.如果用户有意向上滚动,我希望用户不要被打扰.

如何检测我何时已滚动到ListView的底部?

注意:我不能做getListView().getSelectedItemPosition(),因为正如文档所说,在触摸模式下调用setSelection实际上并没有选择项目,只是滚动到它.

android listview android-listview

2
推荐指数
2
解决办法
4538
查看次数

标签 统计

android ×1

android-listview ×1

listview ×1

node.js ×1

redis ×1

socket.io ×1