private void crawl() throws Exception {
		String line = null;
		try {
			while ((line = receive()) != null) {
				if (line.startsWith("+")) {
					// 忽略心跳
				} else if (line.startsWith("$")) {
					line = receive();
					PushMessage message = (PushMessage) JSONObject.toBean(JSONObject.fromObject(line), PushMessage.class);
					boolean isRefresh = false;
					if (message.isPub()) {
						isRefresh = node.refreshPmid(message.getMid());
					} else if (!message.isPub()) {
						isRefresh = node.refreshMid(message.getMid());

					}
					if (isRefresh) {
						listener.onOnlineMessage(message);
					}
				} else if (line.startsWith("-")) {
					throw new Exception("comet节点订阅协议错误: " + line);
				}
			}
		} catch (IOException e) {
			throw new Exception("获取comet节点订阅数据网络数据失败", e);
		}
	}