When ever a player joins a room the other players will get onUserJoinedRoom listener called. You can instantiate at that moment. The next message the player should send, should be his/her position so that you can reflect the newly created gameobject with its location.
There can also be another way that we have used in our samples. What we did is maintained a local list of all joined players. They all keep sending there positions at 10-15 msg/sec rate. When ever we receive a message we simply check if he exists in our local list or not. If he exists, we update his gameobject. If for the first time we are receiving a message from him, we instantiate its game object and add him to our local list.
If you want to instantiate items or NPCs i.e. playable gameobject, you must check out AppWarp S2 on-premise solution which allows you to extend our logic with yours. There you can write logic on server side to generate items or NPCs.