Is it possible the viewer to use send()?

Only broadcasters get the send permission by default provided in the JWT that onAuthorized sends. And if you think about the Twitch PubSub restrictions, it makes sense: 1 message per second per channel

If your viewers were sending PubSub messages, it would quickly overcome this restriction.