1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-20 19:37:03 +00:00

add locks on the MemoryService of the vue mvc example, keep it simple but runnable:P

Former-commit-id: 5d661f401e486a26d66f5c0c297f5cf897fc1834
This commit is contained in:
Gerasimos (Makis) Maropoulos
2017-12-24 01:22:44 +02:00
parent d31b8c5274
commit 9c79dcc97a
4 changed files with 34 additions and 14 deletions

View File

@@ -54,7 +54,7 @@ func (c *TodoController) Post(newItems []todo.Item) PostItemResponse {
func (c *TodoController) GetSync(conn websocket.Connection) {
conn.Join(c.Session.ID())
conn.On("save", func() { // "save" event from client.
conn.To(c.Session.ID()).Emit("saved", nil) // fire a "save" event to the rest of the clients.
conn.To(c.Session.ID()).Emit("saved", nil) // fire a "saved" event to the rest of the clients w.
})
conn.Wait()

View File

@@ -21,28 +21,34 @@ func main() {
// back-end services, you can just stop afer this line and start the server.
app.StaticWeb("/", "./public")
// configure the http sessions.
sess := sessions.New(sessions.Config{
Cookie: "iris_session",
})
// configure the websocket server.
ws := websocket.New(websocket.Config{})
// create a sub router and register the client-side library for the iris websockets,
// you could skip it but iris websockets supports socket.io-like API.
todosRouter := app.Party("/todos")
// http://localhost:8080/todos/iris-ws.js
// serve the javascript client library to communicate with
// the iris high level websocket event system.
todosRouter.Any("/iris-ws.js", websocket.ClientHandler())
// create our mvc application targeted to /todos relative sub path.
m := mvc.New(app.Party("/todos"))
todosApp := mvc.New(todosRouter)
// any dependencies bindings here...
m.AddDependencies(
todosApp.AddDependencies(
todo.NewMemoryService(),
mvc.Session(sess),
ws.Upgrade,
)
// http://localhost:8080/iris-ws.js
// serve the javascript client library to communicate with
// the iris high level websocket event system.
m.Router.Any("/iris-ws.js", websocket.ClientHandler())
// controllers registration here...
m.Register(new(controllers.TodoController))
todosApp.Register(new(controllers.TodoController))
// start the web server at http://localhost:8080
app.Run(iris.Addr(":8080"), iris.WithoutVersionChecker)

View File

@@ -13,7 +13,7 @@ socket.On("saved", function () {
function fetchTodos(onComplete) {
axios.get("/todos").then(response => {
if (response.data == null) {
if (response.data === null) {
return;
}
@@ -65,7 +65,6 @@ var app = new Vue({
// app initial state
data: {
todos: todoStorage.fetch(),
hasChanges: false,
newTodo: '',
editedTodo: null,
visibility: 'all'