You can create user scenarios in JMeter. It is manual work to setup but it works fine. You can add think times, randomization, scaling of number of users, use scripts to generate input data, etc. It's not a simple tool, but it's not a simple problem to solve either.
I never needed WebSocket testing in JMeter but my quick Google shows that it exists.