Skip to content

nqminhuit/socket-chat

Repository files navigation

Demo

To run the application, execute:

$ bash build-and-run-socket-chat.sh

For development

Client setup

Execute webpack-dev-server

cd socket-chat-client
node_modules/webpack-dev-server/bin/webpack-dev-server.js --content-base dist/ --inline --hot --watch-poll

compile jsx:

cd socket-chat-client
node_modules/@babel/cli/bin/babel.js src/jsx/chat-box.jsx -o dist/chat-box.js --presets @babel/preset-react

Server setup

Compile and start server:

rm -rf socket-chat-server/build/classes/*;\
javac socket-chat-server/src/main/java/utility/*.java -d socket-chat-server/build/classes/;\
javac -cp socket-chat-server/build/classes/ socket-chat-server/src/main/java/observer/*.java -d socket-chat-server/build/classes/;\
javac -cp socket-chat-server/build/classes/ socket-chat-server/src/main/java/websocket/*.java -d socket-chat-server/build/classes/;\
javac -cp socket-chat-server/build/classes/ socket-chat-server/src/main/java/*.java -d socket-chat-server/build/classes/;\
java -cp socket-chat-server/build/classes/ WebSocketApp

Or:

Create an executable jar:

jar cvfm socket-chat-server/build/socket-chat-server.jar socket-chat-server/manifest -C socket-chat-server/build/classes/ .

Execute:

java -jar socket-chat-server/build/socket-chat-server.jar

References

notes:

  • Reason when closing (on server-side) java.util.Scanner, web socket on client also close: "the server is capable of exchanging messages with the client endlessly until the socket is closed with its streams."

  • When you edit just 1 java file and want to update the whole jar file, follow this shortcut:

    • compile the edited java file

    • update the compiled java file to the jar file

    • example:

      $ javac -cp socket-chat-server/build/classes/ socket-chat-server/src/main/java/websocket/WebSocket.java  -d socket-chat-server/build/classes/
      $ jar uf socket-chat-server/build/socket-chat-server.jar -C socket-chat-server/build/classes/ websocket/WebSocket.class

Upgrades

For vanilla version, checkout the branch original

There are some idea to upgrade this application: