feat: add ping to example

This commit is contained in:
WqyJh
2025-02-08 17:39:21 +08:00
parent 9dce10dfaf
commit 2154f23e5d
4 changed files with 28 additions and 3 deletions
+1 -1
View File
@@ -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
View File
@@ -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=
+24
View File
@@ -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()
+1
View File
@@ -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)
}