The "user" cookie contains a base64'd username, the JSON responses include an echoed User-Agent, and I can rotate the "roomids" parameter to retrieve message logs from arbitrary rooms. Does security matter for this app?
Sorry, it's not really meant to be a secure chat.
It's catered to people who don't want to signup or install anything. Who just want to go to a link and start chatting.
store a random session id and store all the room data and all that shite on the server somewhere, not in a cookie. Also, use a random string of characters instead of a number for the room ids. That should take care of most of the problems that tptacek mentioned
Sometimes storing session data serverside is clunky, particularly when you have multiple servers; a classic, reasonable approach in that case is to MAC the contents of the cookie with a 256-bit random key, and then AES-CBC encrypt the cookie with that same key. But I agree, for this app, there's no reason there should be structured data in a cookie.
As for the room IDs --- randomizing them is a fine bit of rubber-chicken security. I think it's a good idea. But the right solution is to allow users to erase the chat logs, and to verify that users have access to a given room before dumping all messages starting at message ID 0.