Primeira postagem com um exemplo de uso do valente. Exemplo bem simples. A webapp criada atualiza um contador a cada segundo no browser. Lembrando que fiz o valente quando estava codificando um painel(dashboard) para o iMedNow e toda comunicação e feita via websocket.
O compilador Go deve estar instalado, assim como o valente. Em algum diretório dentro do $GOPATH/src execute:
$ valente new count
O diretório count será criado com um projeto inicial.
. ├── forms │ ├── home.go │ └── login.go ├── main.go └── public ├── index.html └── js ├── app.js └── jquery.blockUI.min.js
Iremos editar apenas o arquivo home.go:
package forms
import (
"log"
"strconv"
"time"
"github.com/trumae/valente"
"github.com/trumae/valente/action"
"golang.org/x/net/websocket"
)
const htmlFormHome = `
<h3> Home </h3>
<span id="count"> </span >
`
//FormHome example
type FormHome struct {
valente.FormImpl
}
//Initialize inits the Home Form
func (form FormHome) Initialize(ws *websocket.Conn) valente.Form {
log.Println("FormHome Initialize")
action.HTML(ws, "content", htmlFormHome)
go func() {
i := 0
c := time.Tick(1 * time.Second)
for _ = range c {
i = i + 1
err := action.HTML(ws, "count", strconv.Itoa(i))
if err != nil {
log.Println("Error sending count ", err)
return
}
}
}()
return form
}
As linhas pintadas de azul foram adicinadas ao arquivo inicial gerado automaticamente pelo valente. No início temos a declaração do pacote "strconv" que será utilizado para converter inteiro em string.
Depois temos a declaração do html que irá ser utilizado no desenho da página principal. Um span é declarado e será utilizado para exibir o número da contagem. Por último, uma corotina é disparada. Essa corotina atualiza, a cada segundo o conteúdo do elemento html "count".
Para executar o exemplo basta entrar no diretório "count" e executar:
$ go build $ ./count
Boa diversão!