This usually means that another process is bound to the Web Socket port. You can open up your browser's developer tools to verify.
The Web Socket port is automatically configured to be the regular Http port 8080 +1 = 8081.
While you can configure the Http port using ZEPPELIN_PORT, the Web Socket port is not as configurable.
This is particularly an issue when running Zeppelin within a Docker Container. If you map your ports to different ports than Docker is using, the Web Socket port will be +1 relative to the Docker Container port - not the mapped Host port.