Polling the streams endpoint is the correct way to get the current view count. Because of caching you should limit polling to around once per minute or slower.
The stream changed webhook topic intentionally does not send notifications for viewer count changes, as this is a design choice by Twitch.
Use of undocumented endpoints can and will break/change at any time and without prior warning, and this does happen from time to time so general advice is don’t use undocumented pubsub topics for anything critical or long lasting.