I am currently creating a bot that listens for channel point redemption on a specific channel, once the script is initialized it gets a fresh auth_token using the refresh token, however these tokens have an expiration of I believe one hour. Some streaming sessions might last longer so the token will expire after the hour, would sending a new message with a new oauth token before the end of the hour work for refreshing or would I have to close the current socket and open a new one?
Should be four hours for a regular user token.
For pubsub? No.
When the access token has expired (or close to expire)
Just use the refresh token to get a new token
Then just LISTEN (again) using the existing token. (may want to UNLISTEN first to prevent dupes/weirdness)
So no need to destory the old socket.
Or start a new socket with the new token + listen requests.
Then when that has finished connecting close the old socket.
I have a method in my Bot class that sends a message, would the message sent be something like this?
data = json.dumps({
"type": "LISTEN",
"nonce": str(nonce),
"data": {
"topics": ["channel-points-channel-v1."+str(self.channel_id)],
"auth_token": self.access_token}
})
await self.sendMessage(data)
where self.access_token is the refreshed token.
It is identical to the LISTEN command you sent on initial connecting, it’s just with the new token.
So yes.