mirror of
https://github.com/hanzoai/go-openai-realtime.git
synced 2026-09-30 21:54:42 +00:00
feat: add ping to example
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@ module github.com/WqyJh/go-openai-realtime/examples
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/WqyJh/go-openai-realtime v0.3.0-alpha
|
||||
github.com/WqyJh/go-openai-realtime v0.3.5-0.20250208091501-af3079f3fb2b
|
||||
github.com/faiface/beep v1.1.0
|
||||
github.com/gordonklaus/portaudio v0.0.0-20230709114228-aafa478834f5
|
||||
github.com/sashabaranov/go-openai v1.32.0
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||
github.com/WqyJh/go-openai-realtime v0.3.0-alpha h1:2IDh9xm3VLAXnmOtbOhv2/ytMceJYgj7Cw0e1TbqBpY=
|
||||
github.com/WqyJh/go-openai-realtime v0.3.0-alpha/go.mod h1:nmUYODacQuObuh0DFSEIDfJM9L4ZFDRU/OEGYMryt60=
|
||||
github.com/WqyJh/go-openai-realtime v0.3.5-0.20250208091501-af3079f3fb2b h1:8teuz/JaWkMaqBrlIKF86EhHi0ajbJrm+shD1IXCvK8=
|
||||
github.com/WqyJh/go-openai-realtime v0.3.5-0.20250208091501-af3079f3fb2b/go.mod h1:nmUYODacQuObuh0DFSEIDfJM9L4ZFDRU/OEGYMryt60=
|
||||
github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
|
||||
github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
|
||||
github.com/d4l3k/messagediff v1.2.2-0.20190829033028-7e0a312ae40b/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
|
||||
|
||||
@@ -6,6 +6,8 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
openairt "github.com/WqyJh/go-openai-realtime"
|
||||
)
|
||||
@@ -19,6 +21,8 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var sendLock sync.Mutex
|
||||
|
||||
// Teletype response
|
||||
responseDeltaHandler := func(ctx context.Context, event openairt.ServerEvent) {
|
||||
switch event.ServerEventType() {
|
||||
@@ -48,6 +52,24 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-time.After(30 * time.Second):
|
||||
sendLock.Lock()
|
||||
err := conn.Ping(ctx)
|
||||
sendLock.Unlock()
|
||||
if err != nil {
|
||||
log.Printf("ping error: %v", err)
|
||||
} else {
|
||||
log.Printf("ping success")
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
fmt.Println("Conversation")
|
||||
fmt.Println("---------------------")
|
||||
fmt.Print("> ")
|
||||
@@ -56,6 +78,7 @@ func main() {
|
||||
if s.Text() == "exit" || s.Text() == "quit" {
|
||||
break
|
||||
}
|
||||
sendLock.Lock()
|
||||
conn.SendMessage(ctx, &openairt.ConversationItemCreateEvent{
|
||||
Item: openairt.MessageItem{
|
||||
ID: openairt.GenerateID("msg_", 10),
|
||||
@@ -76,6 +99,7 @@ func main() {
|
||||
MaxOutputTokens: 4000,
|
||||
},
|
||||
})
|
||||
sendLock.Unlock()
|
||||
}
|
||||
conn.Close()
|
||||
err = <-connHandler.Err()
|
||||
|
||||
@@ -130,6 +130,7 @@ func (c *CoderWebSocketConn) Response() *http.Response {
|
||||
}
|
||||
|
||||
// Ping sends a ping message to the WebSocket connection.
|
||||
// It would be blocked until the pong message is received or the ctx is done.
|
||||
func (c *CoderWebSocketConn) Ping(ctx context.Context) error {
|
||||
return c.conn.Ping(ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user