通过list建立websocket
This commit is contained in:
@@ -16,20 +16,20 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Image struct {
|
type Image struct {
|
||||||
ID int `json:"id" gorm:"primary_key"`
|
ID int `json:"id" gorm:"primary_key"` // ID
|
||||||
Name string `json:"name"`
|
Name string `json:"name"` // 名称
|
||||||
Hash string `json:"hash"`
|
Hash string `json:"hash"` // 哈希值
|
||||||
Path string `json:"path"`
|
Path string `json:"path"` // 路径
|
||||||
Type string `json:"type"`
|
Type string `json:"type"` // 类型
|
||||||
Size int `json:"size"`
|
Size int `json:"size"` // 大小
|
||||||
Width int `json:"width"`
|
Width int `json:"width"` // 宽度
|
||||||
Height int `json:"height"`
|
Height int `json:"height"` // 高度
|
||||||
Prompt string `json:"prompt"`
|
Format string `json:"format"` // 格式
|
||||||
Format string `json:"format"`
|
Prompt string `json:"prompt"` // 提示词
|
||||||
NegativePrompt string `json:"negative_prompt"`
|
NegativePrompt string `json:"negative_prompt"` // 负向提示
|
||||||
NumInferenceSteps int `json:"num_inference_steps"` // Number of inference steps (minimum: 1; maximum: 500)
|
NumInferenceSteps int `json:"num_inference_steps"` // 推理步数(minimum: 1; maximum: 500)
|
||||||
GuidanceScale float32 `json:"guidance_scale"` // Scale for classifier-free guidance (minimum: 1; maximum: 20)
|
GuidanceScale float32 `json:"guidance_scale"` // 引导比例(minimum: 1; maximum: 20)
|
||||||
Scheduler string `json:"scheduler"` // (DDIM|K_EULER|DPMSolverMultistep|K_EULER_ANCESTRAL|PNDM|KLMS)
|
Scheduler string `json:"scheduler"` // 调度器(DDIM|K_EULER|DPMSolverMultistep|K_EULER_ANCESTRAL|PNDM|KLMS)
|
||||||
Seed int `json:"seed"` // 随机种子(minimum: 0; maximum: 2147483647)
|
Seed int `json:"seed"` // 随机种子(minimum: 0; maximum: 2147483647)
|
||||||
FromImage int `json:"from_image"` // 来源图片(如果是从图片生成的, 则记录来源图片的ID)
|
FromImage int `json:"from_image"` // 来源图片(如果是从图片生成的, 则记录来源图片的ID)
|
||||||
Task string `json:"task"` // 任务编号(uuid)
|
Task string `json:"task"` // 任务编号(uuid)
|
||||||
|
@@ -19,9 +19,48 @@ import (
|
|||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"github.com/gorilla/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var images_websocket_manager = models.NewWebSocketManager()
|
||||||
|
|
||||||
func ImagesGet(w http.ResponseWriter, r *http.Request) {
|
func ImagesGet(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
// websocket 推理图像
|
||||||
|
if r.Header.Get("Upgrade") == "websocket" {
|
||||||
|
upgrader := websocket.Upgrader{}
|
||||||
|
conn, err := upgrader.Upgrade(w, r, nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer conn.Close()
|
||||||
|
|
||||||
|
task := r.URL.Query().Get("task")
|
||||||
|
if task == "" {
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
w.Write([]byte("task 参数不能为空"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
wsid := images_websocket_manager.AddConnection(conn)
|
||||||
|
defer images_websocket_manager.RemoveConnection(wsid)
|
||||||
|
|
||||||
|
for {
|
||||||
|
_, msg, err := conn.ReadMessage()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println(string(msg))
|
||||||
|
if string(msg) == "close" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
var listview models.ListView
|
var listview models.ListView
|
||||||
listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1)
|
listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1)
|
||||||
listview.PageSize = utils.ParamInt(r.URL.Query().Get("pageSize"), 10)
|
listview.PageSize = utils.ParamInt(r.URL.Query().Get("pageSize"), 10)
|
||||||
@@ -67,8 +106,10 @@ func ImagesPost(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 直接创建一组图片
|
// TODO: 创建任务获得任务编号, 多张图时期望可以流式推理
|
||||||
task := uuid.New().String()
|
task := uuid.New().String()
|
||||||
|
|
||||||
|
// 直接创建一组图片
|
||||||
var image_list []models.Image
|
var image_list []models.Image
|
||||||
for i := 0; i < template.Number; i++ {
|
for i := 0; i < template.Number; i++ {
|
||||||
var image models.Image
|
var image models.Image
|
||||||
|
Reference in New Issue
Block a user