diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts
index 3785082..ad57dc1 100644
--- a/src/onebot11/action/index.ts
+++ b/src/onebot11/action/index.ts
@@ -50,6 +50,7 @@ import { ForwardFriendSingleMsg, ForwardGroupSingleMsg } from './msg/ForwardSing
 import { GetGroupEssence } from './group/GetGroupEssence'
 import { GetGroupHonorInfo } from './group/GetGroupHonorInfo'
 import { GoCQHTTHandleQuickOperation } from './go-cqhttp/QuickOperation'
+import GetEvent from './llonebot/GetEvent'
 
 export const actionHandlers = [
   new GetFile(),
@@ -59,6 +60,7 @@ export const actionHandlers = [
   new GetGroupAddRequest(),
   new SetQQAvatar(),
   new GetFriendWithCategory(),
+  new GetEvent(),
   // onebot11
   new SendLike(),
   new GetMsg(),
diff --git a/src/onebot11/action/llonebot/GetEvent.ts b/src/onebot11/action/llonebot/GetEvent.ts
new file mode 100644
index 0000000..09827b1
--- /dev/null
+++ b/src/onebot11/action/llonebot/GetEvent.ts
@@ -0,0 +1,23 @@
+import BaseAction from '../BaseAction'
+import { ActionName } from '../types'
+import { getHttpEvent } from '../../server/event-for-http'
+import { PostEventType } from '../../server/post-ob11-event'
+// import { log } from "../../../common/utils";
+
+interface Payload {
+  key: string
+  timeout: number
+}
+
+export default class GetEvent extends BaseAction<Payload, PostEventType[]> {
+  actionName = ActionName.GetEvent
+  protected async _handle(payload: Payload): Promise<PostEventType[]> {
+    let key = ''
+    if (payload.key) {
+      key = payload.key;
+    }
+    let timeout = parseInt(payload.timeout?.toString()) || 0;
+    let evts = await getHttpEvent(key,timeout);
+    return evts;
+  }
+}
diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts
index 1b61ecc..f5b1abb 100644
--- a/src/onebot11/action/types.ts
+++ b/src/onebot11/action/types.ts
@@ -22,6 +22,7 @@ export enum ActionName {
   Debug = 'llonebot_debug',
   GetFile = 'get_file',
   GetFriendsWithCategory = 'get_friends_with_category',
+  GetEvent = 'get_event',
   // onebot 11
   SendLike = 'send_like',
   GetLoginInfo = 'get_login_info',
diff --git a/src/onebot11/server/event-for-http.ts b/src/onebot11/server/event-for-http.ts
new file mode 100644
index 0000000..086aa2a
--- /dev/null
+++ b/src/onebot11/server/event-for-http.ts
@@ -0,0 +1,68 @@
+import { PostEventType } from "./post-ob11-event"
+
+
+interface HttpEventType {
+    seq: number
+    event: PostEventType
+}
+
+interface HttpUserType {
+    lastAccessTime: number
+    userSeq: number
+}
+
+let curentSeq:number = 0;
+let eventList:HttpEventType[] = [];
+let httpUser:Record<string,HttpUserType> = {};
+
+
+export function postHttpEvent(event: PostEventType) {
+    curentSeq += 1;
+    eventList.push({
+        seq: curentSeq,
+        event: event
+    });
+    while(eventList.length > 100) {
+        eventList.shift();
+    }
+}
+
+
+export async function getHttpEvent(userKey:string,timeout = 0) {
+    let toRetEvent = [];
+
+    // 清除过时的user,5分钟没访问过的user将被删除
+    let now = Date.now();
+    for(let key in httpUser) {
+        let user = httpUser[key];
+        if(now - user.lastAccessTime > 1000 * 60 * 5) {
+            delete httpUser[key];
+        }
+    }
+
+    // 增加新的user
+    if(!httpUser[userKey] ) {
+        httpUser[userKey] = {
+            lastAccessTime: now,
+            userSeq: curentSeq
+        }
+    }
+
+    let user = httpUser[userKey];
+    // 等待数据到来,暂时先这么写吧......
+    while(curentSeq == user.userSeq && Date.now() - now < timeout) {
+        await new Promise( resolve => setTimeout(resolve, 10) );
+    }
+    // 取数据
+    for(let i = 0; i < eventList.length; i++) {
+        let evt = eventList[i];
+        if(evt.seq > user.userSeq) {
+            toRetEvent.push(evt.event);
+        }
+    }
+
+    // 更新user数据
+    user.lastAccessTime = Date.now();
+    user.userSeq = curentSeq;
+    return toRetEvent;
+}
diff --git a/src/onebot11/server/post-ob11-event.ts b/src/onebot11/server/post-ob11-event.ts
index d78f130..c781ea6 100644
--- a/src/onebot11/server/post-ob11-event.ts
+++ b/src/onebot11/server/post-ob11-event.ts
@@ -8,6 +8,7 @@ import { log } from '@/common/utils'
 import { getConfigUtil } from '@/common/config'
 import crypto from 'crypto'
 import { handleQuickOperation, QuickOperationEvent } from '../action/quick-operation'
+import { postHttpEvent } from './event-for-http'
 
 export type PostEventType = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent
 
@@ -78,4 +79,9 @@ export function postOb11Event(msg: PostEventType, reportSelf = false, postWs = t
   if (postWs) {
     postWsEvent(msg)
   }
+  if(!(msg.post_type == 'meta_event' && (msg as OB11BaseMetaEvent).meta_event_type == 'heartbeat')) {
+    // 不上报心跳
+    postHttpEvent(msg)
+  }
+  
 }