|
@@ -22,12 +22,7 @@ func (c *SSEController) Register() {
|
|
|
c.Ctx.Output.Header("Connection", "keep-alive")
|
|
c.Ctx.Output.Header("Connection", "keep-alive")
|
|
|
c.Ctx.Output.Header("Access-Control-Allow-Origin", "*")
|
|
c.Ctx.Output.Header("Access-Control-Allow-Origin", "*")
|
|
|
|
|
|
|
|
- // 生成客户端ID
|
|
|
|
|
- clientID := c.Ctx.Input.Param(":clientid")
|
|
|
|
|
- if clientID == "" {
|
|
|
|
|
- // 如果没有提供客户端ID,生成一个
|
|
|
|
|
- clientID = fmt.Sprintf("client_%d", time.Now().UnixNano())
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ clientID := fmt.Sprintf("client_%d", time.Now().UnixNano())
|
|
|
|
|
|
|
|
// 创建消息通道
|
|
// 创建消息通道
|
|
|
messageChan := make(chan common.SSEMessage, 10)
|
|
messageChan := make(chan common.SSEMessage, 10)
|
|
@@ -79,10 +74,10 @@ func (c *SSEController) sendSSEMessage(message common.SSEMessage) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 格式化SSE消息
|
|
// 格式化SSE消息
|
|
|
sseData := fmt.Sprintf("event: %s\ndata: %s\n\n", message.Event, string(data))
|
|
sseData := fmt.Sprintf("event: %s\ndata: %s\n\n", message.Event, string(data))
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 在Beego v2中,使用ResponseController来写入响应
|
|
// 在Beego v2中,使用ResponseController来写入响应
|
|
|
c.Ctx.ResponseWriter.Write([]byte(sseData))
|
|
c.Ctx.ResponseWriter.Write([]byte(sseData))
|
|
|
c.Ctx.ResponseWriter.Flush()
|
|
c.Ctx.ResponseWriter.Flush()
|