There is no login screen - how come? Your browser does not support Java 1.1.
I can not log in. Why? Maybe you are trying to connect "As existing user" with a user name that does not exist or with a wrong password (check the status line). Maybe you are trying to connect "As new user" with a user name that does already exist (check the status line). Another possible reason (though the most unlikely one) is that the Chat Server at www.weirdoz.org is temporarily down.
How can I change my avatar? After logging in, click the "User"-tab in the left upper corner. Select the emotion you want to change your avatar for (e.g. "Happy", which is the default emotion) and click the radiobutton "Predefined". Choose an avatar from the combobox, or click the radiobutton "URL" and enter the location of any image on the web (e.g. "http://www.myserver.com/happy.gif"). Then click "Apply". Your avatars will be updated after a couple of seconds. You can already switch back to the "Chat"-tab and continue chatting in the meantime. Change your emotion in the right lower corner to the one you just updated, so that other users can see your new avatar. The size of each image is limited to 20kB, the overall upload limit is 80kB.
How can I check other users' data? Right click on the user's icon in the room's bird-eye view at the right middle of the window and choose "View user info" from the context menu.
How can I whisper to another user? Right click on the user's icon in the room's bird-eye view at the right middle of the window and choose "Whisper to user" from the context menu.
How can check the current room's settings? Right click anywhere within the room's bird-eye view at the right middle and choose "View room settings" from the context menu.
How can I remove a room? Log in as the administrator of the room or use the "Admin"-user, "Join" the room you want to delete, click the "Room"-tab, and there "Delete".
How can I install Visual Chat on my own site? There are two possibilities: In case you have execution permission on your Server System, download the Visual Chat Server Installation, and install it on your host. In case you can just upload static HTML pages, copy and paste the following HTML code:
<TABLE align="center" border="5" cellpadding="0" cellspacing="0"> <TR> <TD> <APPLET CODE="chat.ChatApplet" ARCHIVE="http://www.weirdoz.org/visualchat/chat.jar" CODEBASE="http://www.weirdoz.org/visualchat" WIDTH=480 HEIGHT=400> <PARAM NAME="CabBase" VALUE="http://www.weirdoz.org/visualchat/chat.cab"> <PARAM NAME="Port" VALUE="5555"> <PARAM NAME="Room" VALUE="Lobby"> <PARAM NAME="DemoMode" VALUE="FALSE"> </APPLET> </TD> </TR> </TABLE>You might want to have a look at the Visual Chat Installation Page for details.
How can I redirect users that connect from my web page to a certain room after login? Log in and create the room, let's call it "Foo Chat". Then include the following line in your HTML-code:
<PARAM NAME="Room" VALUE="Foo Chat">
How can I prevent the demo window from popping up? Include the following line in your HTML-code:
<PARAM NAME="DemoMode" VALUE="FALSE">
How can I prevent users from creating or joining other rooms? Include one or both of following lines in your HTML-code:
<PARAM NAME="RoomCreation" VALUE="FALSE"> <PARAM NAME="RoomJoining" VALUE="FALSE">
How can I add images to the list of predefined avatars? This can be done by adding PredefinedAvatar-Parameters to the applet tag. Leave the first predefined avatar (PredefinedAvatar[0]) like this, and let the following parameters (starting with PredefinedAvatar[1]) point to any image on the web:
<PARAM NAME="PredefinedAvatar[0]" VALUE="Smiley:smiley6.gif,smiley0.gif,smiley1.gif,smiley2.gif,smiley3.gif,smiley4.gif,smiley5.gif"> <PARAM NAME="PredefinedAvatar[1]" VALUE="MyImage:http://www.somewhere.com/back.gif,http://www.somewhere.com/happy.gif,http://www.somewhere.com/serious.gif">
I want my site's authenticated users to login to Visual Chat automatically - how can that be achieved? That's easy as well. The only thing you will have to do is to dynamically generate the required HTML-code on your server. By passing some additional parameters to the applet, the login will be done automatically.
<PARAM NAME="AutoLogin" VALUE="TRUE"> <PARAM NAME="User" VALUE="usernamegoeshere"> <PARAM NAME="Password" VALUE="passwordgoeshere">
In addition, it is important to tell Visual Chat whether the user must be created (usually on the first login), or exists already (from the second login on).
<PARAM NAME="LoginMode" VALUE="1"> <!-- create new user --> <PARAM NAME="LoginMode" VALUE="2"> <!-- use existing user -->
Where can I download the Visual Chat Server Installation? Just right here.
What are the system requirements ro run the Visual Chat Server?
Visual Chat has been successfully tested under Windows 95/98/NT/2000/XP, Sun Solaris, Linux and Apple Macintosh.
After starting the Visual Chat Server Installer on my Unix system, the execution stops during or after the system is being searched for Java Virtual Machines - what now? The Visual Chat Server Installer for Unix comes with a graphical user interface. If you only have Telnet or SSH access on your WebServer host (hence no possibility to start graphical applications), you might want to download the ZIP-Version. In this case, simply unzip the file VisualChat.zip on your server.
How do I start the Chat Server? A ChatServer-executable comes with the Installation Wizard Versions, and can be found in the target folder that was chosen during installation. You can either invoke the program via your desktop (in case you have local access - simply double-click the ChatServer-icon, just like starting any other application), or remotely using Telnet or SSH.
In case you want to pass some commandline arguments, here is the exact syntax for running the ChatServer-executable:
ChatServer[.exe] [ port [ Serverkey ] ]
e.g.
[~]$ cd VisualChat
[~/VisualChat]$ ChatServer 5555 MyServerkey
The port must match with the port provided to the Client applet over a HTML Applet-parameter (see chat.html). The Serverkey is used to protect the Administration applet from unauthorized access. If no Serverkey is provided, it is set to "Admin".
If you downloaded the ZIP-File Chat Server Version, you will have to enter the following command from your commandline shell: java -cp server.jar chat.ChatServer.
java -cp server.jar chat.ChatServer [ port [ Serverkey ] ]
This has to be done from the chatserver-subfolder (created during installation), e.g.
[~]$ cd VisualChat/chatserver
[~/VisualChat/chatserver]$ java -cp server.jar chat.ChatServer 5555 MyServerkey
8/1/98 11:01:13 PM: Listening on port 5555...
8/1/98 11:01:13 PM: Storage folder is users/...
8/1/98 11:01:13 PM: Image folder is images/...
8/1/98 11:01:13 PM: Room folder is rooms/...
8/1/98 11:01:13 PM: Room filename is rooms...
8/1/98 11:01:13 PM: Log level is 1...
8/1/98 11:01:13 PM: Nr of banned ip-addresses read from banned_ip: 1
8/1/98 11:01:13 PM: ChatServer up and running...
The ZIP-File Version also contains sample start scripts for Windows (startchat.bat) and Unix (startchat.sh).
Why do I receive an error message like "Exception in thread "main" java.lang.InternalError: Can't connect to X11" or "java.lang.UnsatisfiedLinkError: no awt in shared library path" when running the Chat Server on my Unix System? The Chat Server takes use of the Java Abstract Window Toolkit in order to handle colors, images, etc. Java AWT requires a native graphical user interface, in case of Unix most likely an X11 Window System. You should ensure that an X11 System is installed and an X11 Server is running on your system. Let the environment variable DISPLAY point to the X-Server (e.g. "mysystem.com:0"). Contact your server administrator in case of any doubts.
I installed and run the Chat Server, but I can't login - why? Go sure that when testing you call the Client Applet via your webserver:
http://myserver.com/visualchat/chat.htmlDon't run it over a file-codebase like
file://c|/visualchat/chat.htmlbecause some browsers won't allow you to connect to the Server (MSIE won't, Netscape will though).
How can I administrate the system? You should be aware that you can only administrate your own Visual Chat Server Installation. If you chose just to embed the Applet from www.weirdoz.org via HTML, you can not expect Admin rights there. In case you are running your own Server Installation, log in with the "Admin"-user. This special user account will be created when the Server is started for the first time. The "Admin"-users default password is "Admin" as well (unless a servkey was provided as a commandline argument when starting the Chat Server for the first time. In this case, the Servkey will also serve as the "Admin"-user's password). When being online with the "Admin" user, you have access to every room, and the right to delete rooms and kick users. Please change the password of the "Admin" user as soon as possible.
Besides, you can use the Admin Applet to remotely administrate your system. This Applet comes with the download package, and is located in the subfolder "admin". Call up the admin.html page in your browser, enter the Serverkey, and connect. You can then scroll through and update all your users' data.
What is the Serverkey? The Serverkey is a commandline argument that can be passed to the Chat Server Executable. It is used for protecting the Administration Applet. By default, it is set to "Admin".
From where can I download a Java runtime?
How many concurrent user session can be handled by the Chat Server? The bottleneck is not so much the Server's CPU speed, but its network connection. As Visual Chat is graphical, it produces quite some traffic. Still at www.weirdoz.org we have up to 50 people online at the same time, without any performance problem. Slow client connections (modems) might then run into delays, though.
I want to adapt the user interface to another language. How to do that? Obviously the most comfortable way would be to simply edit a file with the text resources. Unfortunately the text is hardcoded, and you will have to adapt the text, and recompile it. If someone would be willing to port Visual Chat to use Java ResourceBundles, please let me know. I would highly appreciate that and offer this version for download for everyone interested.
How can I change the 3D Environment? New: This feature was introduced in Visual Chat 2.21. The 3D environment can be adapted by choosing between different textures for walls, frames or windows, and the tiles on the floor. Feel free to set up your own unique design by combining the textures. Important: The textures can only be changed for the room, to where you redirected your users by applying the
<PARAM NAME="Room" VALUE="Foo Chat">tag (see above). Textures are attached to objects by using the following applet parameters:
<PARAM NAME="Wall[1]" VALUE="wall1.jpg"> (choose betweeen wall1.jpg, wall2.jpg, wall3.jpg, wall4.jpg, wall5.jpg) <PARAM NAME="Wall[2]" VALUE="wall2.jpg"> (choose betweeen wall1.jpg, wall2.jpg, wall3.jpg, wall4.jpg, wall5.jpg) <PARAM NAME="Frame[1]" VALUE="frame1.jpg"> (choose betweeen frame1.jpg, frame2.jpg, frame3.jpg, frame4.jpg, frame5.jpg) <PARAM NAME="Frame[2]" VALUE="frame2.jpg"> (choose betweeen frame1.jpg, frame2.jpg, frame3.jpg, frame4.jpg, frame5.jpg) <PARAM NAME="Tile[1]" VALUE="tile1.jpg"> (choose betweeen tile1.jpg, tile2.jpg, tile3.jpg, tile4.jpg, tile5.jpg) <PARAM NAME="Tile[2]" VALUE="tile2.jpg"> (choose betweeen tile1.jpg, tile2.jpg, tile3.jpg, tile4.jpg, tile5.jpg)
How does the Visual Chat codebase look like and which new features can be expected in the future? Visual Chat is a small student project - not a product with the development-power which would be necessary to continue implementing new features. Implementation was finished in early 1998, back when I just started getting to know Java, and was still missing experience in OOP. From today's point of view, a major refactoring/re-engineeing effort would be necessary to create a solid base for future maintenance and enhancements. Here are some ideas for further improvements:
ChatServerListener | Listen for connections | |--------------->Connection1 | | | | |---------------------|-------------------------------------->Connection2 | | -------------- | | Receive | ChatServer | | | | -------------- | | ChatServer.hdlReq() ---->|-| | Receive | invoked and runs | | | | | | | | .-|<---- ChatServer.hdlReq() | | | | . | invoked and blocks | ChatServer.hdlReq() <----|-| . | | | done | | | | | | | | | ChatServer.hdlReq() | | | | | runs | Send | | | | | | | | | | | | | |-|----> ChatServer.hdlReq() | | | | done | | | | | | | | | | | | | | Send | | | | |This approach works and ensures thread safety, but the fact that one client's "receive"-thread can block another client's "send"-stream (as being accessed in the "receive"-thread) is potentially dangerous. Also, synchronization must be ensured by explicitly locking multithreaded resources, an unnecessarily complicated solution which might also introduce some performance problems (bottleneck due to locking central components). Instead, there should be one central ChatServer "worker"-thread, which receives input events over a queue, and works on one event at one time, hence keeping its internal state consistent. Writing should then be delegated to "send"-threads, once again using queues, so no synchronous blocking will be introduced, and the "worker"-thread can immediately move on to its next task. Then no explicit synchronization effort is required any more either.
ChatServerListener ChatServer | | Listen for | connections | | | |---------------------|-------->ConnectionReceive1---->ConnectionSend1 | | | | |---------------------|-------------------|-------------------|----------->ConnectionSend2 | | Receive | | | | --------- | | | | |<----| Queue |<----| | | | | --------- | | | | hdlReq() | | | | | | | | | --------- | | | |------------------------>| Queue |---->| | | | --------- | | | | Send | | | | | | | --------- | | |-------------------------------------------->| Queue |---->| | | --------- | | | Send | | |