func Start(service *cham.Service, args ...interface{}) cham.Dispatch { log.Infoln("New Service ", service.String()) openid, session := args[0].(string), args[1].(uint32) user, err := newUser(service, &model.UserModel{Openid: openid}, session) if err != nil { log.Errorln("Service ", service.String(), "init error,", err.Error()) service.Stop() } return func(session int32, source cham.Address, ptype uint8, args ...interface{}) []interface{} { cmd := args[0].(uint8) switch cmd { case CHANGE_SESSION: user.session = args[1].(uint32) } return cham.NORET } }