Skip to Content
Odoo Меню
  • Увійти
  • Спробуйте це безкоштовно
  • Додатки
    Фінанси
    • Бухоблік
    • Виставлення рахунку
    • Витрати
    • Електронні таблиці (BI)
    • Документи
    • Підпис
    Продажі
    • CRM
    • Продажі
    • POS Магазин
    • POS Ресторан
    • Підписки
    • Оренда
    Веб-сайти
    • Конструктор веб-сайту
    • Електронна комерція
    • Блог
    • Форум
    • Живий чат
    • Електронне навчання
    Ланцюг поставок
    • Склад
    • Виробництво
    • PLM
    • Купівлі
    • Технічне обслуговування
    • Якість
    Кадри
    • Співробітники
    • Рекрутинг
    • Відпустки
    • Оцінювання
    • Рекомендації
    • Автотранспорт
    Маркетинг
    • Маркетинг соцмереж
    • Email-маркетинг
    • SMS-маркетинг
    • Події
    • Автом. маркетингу
    • Опитування
    Послуги
    • Проект
    • Табелі
    • Виїзне обслуговування
    • Служба підтримки
    • Планування
    • Призначення
    Продуктивність
    • Обговорення
    • Схвалення
    • IoT
    • IP-телефонія
    • База знань
    • WhatsApp
    Сторонні модулі Odoo Studio Платформа Odoo Cloud
  • Сфери
    Роздрібна торгівля
    • Книжковий магазин
    • Магазин одягу
    • Магазин меблів
    • Продуктовий магазин
    • Магазин будівельних матеріалів
    • Магазин іграшок
    Food & Hospitality
    • Бар та паб
    • Ресторан
    • Фастфуд
    • Guest House
    • Дистриб'ютор напоїв
    • Hotel
    Нерухомість
    • Real Estate Agency
    • Архітектурна фірма
    • Будівництво
    • Управління нерухомістю
    • Садівництво
    • Асоціація власників нерухомості
    Консалтинг
    • Бухгалтерська компанія
    • Партнер Odoo
    • Агенція маркетингу
    • Юридична фірма
    • Придбання Талантів
    • Аудит та сертифікація
    Виробництво
    • Textile
    • Metal
    • Меблі
    • Їжа
    • Brewery
    • Корпоративні подарунки
    Здоров'я & Фітнес
    • Спортивний клуб
    • Оптика
    • Фітнес-центр
    • Практики здоров'я
    • Аптека
    • Салон краси
    Trades
    • Ремонтник
    • IT-обладнання та Підтримка
    • Системи сонячної енергії
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Інші
    • Nonprofit Organization
    • Екологічна агенція
    • Оренда білбордів
    • Фотографія
    • Лізинг велосипедів
    • Реселлер програмного забезпечення
    Browse all Industries
  • Спільнота
    Навчання
    • Навчальний посібник
    • Документація
    • Сертифікації
    • Тренування
    • Блог
    • Подкаст
    Сприяйте Освіті
    • Програма навчання
    • Бізнес гра Scale Up!
    • Відвідайте Odoo
    Отримайте програмне забезпечення
    • Завантаження
    • Порівняйте версії
    • Релізи
    Співпрацюйте
    • Github
    • Форум
    • Події
    • Переклади
    • Стати партнером
    • Services for Partners
    • Зареєструйте вашу бухгалтерську фірму
    Отримайте послуги
    • Знайдіть партнера
    • Знайдіть бухгалтера
    • Зустріньтеся з консультантом
    • Послуги з впровадження
    • Референси клієнтів
    • Підтримка
    • Оновлення
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Отримати демо
  • Ціни
  • Допомога

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Бухоблік
  • Склад
  • PoS
  • Проект
  • MRP
All apps
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Допомога

How do i utilize odoo's websocket connection ?

Підписатися

Отримуйте сповіщення про активність щодо цієї публікації

Це запитання позначене
developmentcustom
1 Відповісти
3275 Переглядів
Аватар
John Louie

Good day everyone, I'm currently building a custom module and utilizing its controllers to create an external api with custom logic for endpoints like /api/auth/login , /api/auth/whoami etc. Basically it's an attendance logging api for my custom module and is integrated to a mobile application. Currently, I was looking how to make it so that my endpoint for attendnace logging could send notifications to the mobile application. I was thinking of utilizing a websocket and odoo has it's own websocket but i'm having a hard time how to implement it. For reference, here is the endpoint where i want to integrate a notification and basically establish a websocket connection. 


 # ───────────────────────────────────────────────────────────────

    # ATTENDANCE  –  /api/attendance/log  (POST)

    # ───────────────────────────────────────────────────────────────

    @http.route(

        "/api/attendance/log", type="http", auth="public", csrf=False, methods=["POST"]

    )

    def log_attendance(self):

        user = self._current_user()

        if not user:

            return self._json({"error": "Unauthorized"}, 401)

        if user.share:

            return self._json({"error": "Access denied: internal users only"}, 403)


        try:

            data = json.loads(request.httprequest.data or "{}")

        except Exception:

            return self._json({"error": "Malformed JSON body"}, 400)


        enrollment_id = data.get("enrollment_id")

        log_type = data.get("log_type")

        if not enrollment_id or not log_type:

            return self._json({"error": "enrollment_id and log_type are required"}, 400)


        enrollment = request.env["sis.enrollment"].sudo().browse(int(enrollment_id))

        if not enrollment.exists():

            return self._json({"error": "Student does not exist"}, 404)


        try:

            log = (

                request.env["sis.student.attendance.log"]

                .sudo()

                .create(

                    {

                        "enrollment_id": enrollment.id,

                        "log_type": log_type,

                    }

                )

            )

        except ValidationError as ve:

            return self._json({"error": str(ve)}, 400)

        except Exception as e:

            _logger.exception("Failed to log attendance")

            return self._json({"error": str(e)}, 500)


        return self._json(

            {

                "status": "success",

                "log_id": log.id,

                "student_name": enrollment.full_name,

                "section_name": enrollment.section_id.display_name,

            },

            201,

        )

So basically it is an attendance logging of a student and i want to notify their parent in the mobile application once their son/daughter times in/out of their school

0
Аватар
Відмінити
Аватар
STAFFINSIDE
Найкраща відповідь

Hi John,

Odoo’s “websocket” is really the longpolling bus that powers live chat, notifications, and Discuss. It’s not a raw websocket server you can hook into directly, but you can piggyback on it.

For your case (attendance → push update to mobile app), the usual pattern is:

  1. Use the bus.bus model

    request.env['bus.bus'].sudo().sendone( f"attendance_{enrollment_id}", { "student": enrollment.full_name, "section": enrollment.section_id.display_name, "log_type": log_type, } )

    This publishes a message on a custom channel.
  2. Subscribe from your client
    Your mobile app (or another backend service) connects to /longpolling/poll with the channel name (attendance_123). Whenever you sendone, the subscriber gets the payload.
  3. Alternative: external websocket
    If you really need true websockets, you’ll have to spin up a small websocket server (Node, FastAPI, etc.), and then trigger it from Odoo (via HTTP call, RabbitMQ, Redis, etc.) whenever a log is created.

So if you want to stay “inside” Odoo, stick to the bus/longpolling. If you want a native websocket to push directly to your mobile app, you’ll need a separate service alongside Odoo.

Hope that clears it up!

0
Аватар
Відмінити
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Реєстрація
Related Posts Відповіді Переглядів Дія
Oddo Integration with Intune
development
Аватар
0
груд. 25
1563
@guia@¿Cómo hablar con una persona en Air France?
development
Аватар
0
груд. 25
2
How do I change the name of the module, or rather the name assigned to the module, after I created it in Odoo Studio?
development
Аватар
Аватар
1
груд. 25
446
Feature Request: Native “Dialog Filters” in Search Panel
development
Аватар
0
лист. 25
185
Solution to the Getting Started tutorial from the official Odoo 16 documentation
development
Аватар
Аватар
Аватар
2
лист. 25
1575
Спільнота
  • Навчальний посібник
  • Документація
  • Форум
Open Source
  • Завантаження
  • Github
  • Runbot
  • Переклади
Послуги
  • Хостинг Odoo.sh
  • Підтримка
  • Оновлення
  • Кастомні доробки
  • Навчання
  • Знайдіть бухгалтера
  • Знайдіть партнера
  • Стати партнером
Про нас
  • Наша компанія
  • Торгові активи
  • Зв'яжіться з нами
  • Вакансії
  • Події
  • Подкаст
  • Блог
  • Клієнти
  • Юридичні документи • Конфіденційність
  • Безпека
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo - це набір програм для роботи з відкритим кодом, які охоплюють всі ваші потреби компанії: CRM, електронна комерція, бухгалтерський облік, склад, точка продажу, управління проектами тощо.

Унікальна пропозиція Odoo - це одночасно дуже проста у використанні та повністю інтегрована.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now