当前位置: 首页>>代码示例>>Golang>>正文


Golang Conn.ReadJSON方法代码示例

本文整理汇总了Golang中github.com/gorilla/websocket.Conn.ReadJSON方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.ReadJSON方法的具体用法?Golang Conn.ReadJSON怎么用?Golang Conn.ReadJSON使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/gorilla/websocket.Conn的用法示例。


在下文中一共展示了Conn.ReadJSON方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: listener

func listener(conn *websocket.Conn, ID int, field *models.Field) {
	tick := time.NewTicker(5 * time.Millisecond)
	for {
		select {
		case <-tick.C:
			var req struct {
				Request string `json:"request"`
				Param   string `json:"param"`
			}

			err := conn.ReadJSON(&req)
			if err != nil {
				//field.Remove <- ID
				return
			}

			switch req.Request {
			case "move":
				dir, ok := dirMap[req.Param]
				if !ok {
					continue
				}

				wait := new(sync.WaitGroup)
				wait.Add(1)
				field.Change <- models.ChangeDirection{
					Index:     ID,
					Direction: dir,
					Wait:      wait,
				}
				wait.Wait()
			}
		}
	}
}
开发者ID:vibhavp,项目名称:gophertron,代码行数:35,代码来源:websocket.go

示例2: handleOutput

func (h *Hijacker) handleOutput(conn *websocket.Conn, pio ProcessIO) int {
	var exitStatus int
	for {
		var output atc.HijackOutput
		err := conn.ReadJSON(&output)
		if err != nil {
			if !websocket.IsCloseError(err) && !websocket.IsUnexpectedCloseError(err) {
				fmt.Println(err)
			}
			break
		}

		if output.ExitStatus != nil {
			exitStatus = *output.ExitStatus
		} else if len(output.Error) > 0 {
			fmt.Fprintf(os.Stderr, "%s\n", ansi.Color(output.Error, "red+b"))
			exitStatus = 255
		} else if len(output.Stdout) > 0 {
			pio.Out.Write(output.Stdout)
		} else if len(output.Stderr) > 0 {
			pio.Err.Write(output.Stderr)
		}
	}

	return exitStatus
}
开发者ID:ArthurHlt,项目名称:fly,代码行数:26,代码来源:hijacker.go

示例3: Register

// Registers the connection from to the intools engine
func (appClient *AppClient) Register(conn *websocket.Conn) {
	// Add the client to the connected clients
	logs.Debug.Printf("Connection event from client")

	var client = &Client{
		Socket:   conn,
		GroupIds: []string{},
	}
	logs.Debug.Printf("clients before %v", appClient.Clients)

	appClient.Clients[conn] = client
	// appClient.Clients = append(appClient.Clients, client)

	logs.Debug.Printf("clients %v", appClient.Clients)

	// Send ack
	message := Message{
		Command: "connected",
		Data:    nil,
	}
	conn.WriteJSON(message)

	// Handles events from client
Events:
	for {
		var message Message
		err := conn.ReadJSON(&message)
		if err != nil {
			switch err.(type) {
			case *websocket.CloseError:
				logs.Debug.Printf("Websocket %p is deconnected. Removing from clients", conn)
				delete(appclient.Clients, conn)
				logs.Debug.Printf("Clients are now  %v", appClient.Clients)
				break Events
			default:
				logs.Error.Printf("Error while reading json message : %s", err)
				continue Events
			}
		}

		logs.Debug.Printf("Message %v", message)

		switch message.Command {
		case "register-group":
			// Handles group registering for the client
			client.GroupIds = append(client.GroupIds, message.Data["groupId"].(string))
			logs.Debug.Printf("Registered group %s for client %p", message.Data["groupId"], client)
		case "unregister-group":
			// Handles group unregistering for the client
			i := utils.IndexOf(client.GroupIds, message.Data["groupId"].(string))
			if i != -1 {
				client.GroupIds = append(client.GroupIds[:i], client.GroupIds[i+1:]...)
				logs.Debug.Printf("Unregistered group %s for client %p", message.Data["groupId"], client)
			}
		}
		logs.Debug.Printf("Registered groups for client %p are now : %s", client, client.GroupIds)
	}
}
开发者ID:fsamin,项目名称:intools-engine,代码行数:59,代码来源:websocket.go

示例4: pingSocket

func pingSocket(socket *websocket.Conn, err chan string) {
	var v interface{}
	for {
		errr := socket.ReadJSON(&v)
		if errr != nil {
			err <- errr.Error()
		}
	}
}
开发者ID:Fantasim,项目名称:Langage-Go,代码行数:9,代码来源:websockets.go

示例5: patchUserSource

func patchUserSource(t *testing.T, c *websocket.Conn, fileName, oldSource, newSource string) []interface{} {
	patchJson := createPatchJson(t, fileName, oldSource, newSource)
	err := c.WriteMessage(websocket.TextMessage, []byte(patchJson))
	require.Nil(t, err)
	result := make(map[string]interface{})
	err = c.ReadJSON(&result)
	require.Nil(t, err)
	return result["errors"].([]interface{})
}
开发者ID:InteractiveLecture,项目名称:java-evaluation-service,代码行数:9,代码来源:integration_test.go

示例6: ReadJSON

func ReadJSON(conn *websocket.Conn) map[string]interface{} {
	reply := make(map[string]interface{})

	err := conn.ReadJSON(&reply)
	if err != nil {
		logrus.Error(err.Error())
	}

	return reply["data"].(map[string]interface{})
}
开发者ID:gpittarelli,项目名称:Helen,代码行数:10,代码来源:controller.go

示例7: EmitJSONWithReply

func EmitJSONWithReply(conn *websocket.Conn, req map[string]interface{}) (map[string]interface{}, error) {
	if err := conn.WriteJSON(req); err != nil {
		return nil, errors.New("Error while marshing request: " + err.Error())
	}

	resp := make(map[string]interface{})

	if err := conn.ReadJSON(&resp); err != nil {
		return nil, errors.New("Error while marshing response: " + err.Error())
	}

	return resp["data"].(map[string]interface{}), nil
}
开发者ID:gpittarelli,项目名称:Helen,代码行数:13,代码来源:controller.go

示例8: HandleLeafConn

func HandleLeafConn(conn *websocket.Conn) {
	log.Println("Leaf connected")

	for {
		var packet common.Packet
		if err := conn.ReadJSON(&packet); err != nil {
			log.Println("Error reading leaf json: ", err)
			return
		}

		HandlePacket(&packet, conn)
	}
}
开发者ID:broluwo,项目名称:romaine-head,代码行数:13,代码来源:connection.go

示例9: HandleConn

func HandleConn(conn *websocket.Conn) {
	log.Println("Client app connected")
	head.CurrentApp = conn

	for {
		var request Request
		if err := conn.ReadJSON(&request); err != nil {
			log.Println("Error reading app json: ", err)
			return
		}

		response := HandleRequest(&request)
		conn.WriteJSON(response)
	}
}
开发者ID:broluwo,项目名称:romaine-head,代码行数:15,代码来源:connection.go

示例10: processMessage

func processMessage(conn *websocket.Conn) []byte {

	var tests []Test
	// _ = "breakpoint"
	err := conn.ReadJSON(&tests)
	if err != nil {
		return nil
	}
	tests[0].Number++
	message, err := json.Marshal(&tests)
	if err != nil {
		return nil
	}
	return message
}
开发者ID:tulustul,项目名称:RetroBoard,代码行数:15,代码来源:message.go

示例11: Join

func (chat *Chat) Join(client *websocket.Conn) {
	chat.clients = append(chat.clients, client)
	go func() {
		for {
			var message Message
			err := client.ReadJSON(&message)
			message.Time = time.Now()
			if err != nil {
				log.Println(err)
				break
			}
			chat.incoming <- &message
			log.Println("decoded message")
		}
	}()
}
开发者ID:joshheinrichs,项目名称:cmpt436-project,代码行数:16,代码来源:main.go

示例12: handleConnect

func handleConnect(conn *websocket.Conn) {
	player := httpPlayer{game.Black, conn}

	var c commandFromClient
	err := conn.ReadJSON(&c)
	if err != nil {
		log.Println("websocket error:", err)
		return
	}

	switch c.Command {
	case "new_game":
		var args newGameArgs
		if err := json.Unmarshal(c.Args, &args); err != nil {
			log.Printf("bad new_game args: %s (%s)", err, string(c.Args))
			return
		}

		game, err := game.NewGame(game.Config{
			Black:  player,
			White:  cpuPlayer,
			Width:  args.Width,
			Height: args.Height,
			Logger: os.Stderr,
		})

		if err != nil {
			log.Printf("error creating game: %s", err)
			return
		}

		result := game.Play()

		gameOver := commandToClient{
			Command: "game_over",
			Args: map[string]string{
				"message": fmt.Sprintf("%s (%s) is the winner!", result.Winner.Color(), result.Winner.Name()),
			},
		}
		if err := conn.WriteJSON(gameOver); err != nil {
			log.Printf("error sending game_over: %s", err)
			return
		}
	default:
		log.Printf("unknown command from http player: %s", c.Command)
	}
}
开发者ID:karanthapar,项目名称:combo,代码行数:47,代码来源:http.go

示例13: readCommand

func readCommand(ws *websocket.Conn) interface{} {
	var command struct {
		Name    string
		Command json.RawMessage
	}
	if err := ws.ReadJSON(&command); err != nil {
		return err
	}
	newFn := commands[command.Name]
	if newFn == nil {
		return errors.New("unknown command " + command.Name)
	}
	v := newFn()
	if err := json.Unmarshal([]byte(command.Command), v); err != nil {
		return err
	}
	return v
}
开发者ID:tuhuayuan,项目名称:gary.burd.info,代码行数:18,代码来源:main.go

示例14: NewConnection

func NewConnection(ws *websocket.Conn) (*connection, error) {
	var err error
	ret := &connection{ws: ws}

	err = ws.WriteJSON(&MyNode)
	if err == nil {
		err = ws.ReadJSON(&ret.node)
	}

	if err != nil {
		return nil, err
	}

	ret.name = fmt.Sprintf("%s -> %s (%s)", ws.LocalAddr(), ws.RemoteAddr(), ret.node)
	ret.sendChan = make(chan interface{}, 1)
	go ret.sendLoop()
	return ret, nil
}
开发者ID:peak6,项目名称:gmap,代码行数:18,代码来源:gmap.go

示例15: messagesHandler

func messagesHandler(ws *websocket.Conn, ticker *time.Ticker, msg Event, c chan Event, e chan error, e2 chan error) {
	ws.SetPongHandler(func(string) error {
		ws.SetReadDeadline(time.Now().Add(PONG_WAIT))
		return nil
	})
	for {
		err := ws.ReadJSON(&msg)
		if err != nil {
			e <- err
			e2 <- err
			time.Sleep(4 * time.Second)
		} else {
			if reflect.TypeOf(msg).String() == "tutum.Event" {
				c <- msg
			}
		}
	}
}
开发者ID:Karm,项目名称:go-tutum,代码行数:18,代码来源:stream.go


注:本文中的github.com/gorilla/websocket.Conn.ReadJSON方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。