Skip to content

Commit c8b2da1

Browse files
author
Artem Pronchakov
committed
Separate example on client and server init
1 parent 33966df commit c8b2da1

10 files changed

Lines changed: 231 additions & 39 deletions

File tree

WebSocket/init-client/pom.xml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<parent>
6+
<groupId>edu.javacourse</groupId>
7+
<artifactId>examples</artifactId>
8+
<version>1.0-SNAPSHOT</version>
9+
<relativePath>../../</relativePath>
10+
</parent>
11+
12+
<groupId>edu.javacourse.websocket</groupId>
13+
<artifactId>init-client</artifactId>
14+
<version>1.0-SNAPSHOT</version>
15+
<packaging>war</packaging>
16+
17+
<name>WebSocket Init Client</name>
18+
19+
<dependencies>
20+
<dependency>
21+
<groupId>javax</groupId>
22+
<artifactId>javaee-api</artifactId>
23+
<version>7.0</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>org.slf4j</groupId>
27+
<artifactId>slf4j-api</artifactId>
28+
<scope>provided</scope>
29+
</dependency>
30+
</dependencies>
31+
32+
</project>

WebSocket/src/main/java/edu/javacourse/websocket/HelloWebSocketEndpoint.java renamed to WebSocket/init-client/src/main/java/edu/javacourse/websocket/HelloWebSocketEndpoint.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import javax.websocket.*;
77
import javax.websocket.server.ServerEndpoint;
8-
import java.text.SimpleDateFormat;
9-
import java.util.Date;
108

119
/**
1210
* @author Artem Pronchakov <artem.pronchakov@calisto.email>
@@ -16,14 +14,18 @@ public class HelloWebSocketEndpoint {
1614

1715
private static final Logger log = LoggerFactory.getLogger(HelloWebSocketEndpoint.class);
1816

17+
public HelloWebSocketEndpoint() {
18+
log.debug("new HelloWebSocketEndpoint()");
19+
}
20+
1921
@OnOpen
2022
public void open(Session session) {
2123
log.debug("Hello WebSocket opened: id: {}", session.getId());
2224
}
2325

2426
@OnMessage
25-
public String sayHello(String name) {
26-
return "Hello " + name + ": " + new SimpleDateFormat("HH:mm:ss.SSS").format(new Date());
27+
public String onMessage(String message) {
28+
return "Hello " + message;
2729
}
2830

2931
@OnClose
File renamed without changes.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Hello page</title>
6+
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
7+
<script language="JavaScript" type="text/javascript">
8+
$(function() {
9+
var websocket = new WebSocket("ws://localhost:8080/init-client/helloEndpoint");
10+
websocket.onopen = function() {
11+
$("#log").append($("<p>WebSocket connection has been established</p>"));
12+
};
13+
websocket.onclose = function() {
14+
$("#log").append($("<p>WebSocket connection has been closed</p>"));
15+
};
16+
websocket.onmessage = function(event) {
17+
var serverMessage = $("<p>" + event.data + "</p>");
18+
$("#container").html(serverMessage);
19+
};
20+
sendMessage = function(name) {
21+
websocket.send(name);
22+
};
23+
});
24+
</script>
25+
</head>
26+
<body>
27+
28+
<div id="log"></div>
29+
30+
<hr/>
31+
32+
Name - <input id="name" type="text"/>
33+
<button onclick="sendMessage($('#name').val())">Say hello</button>
34+
35+
<hr/>
36+
37+
<div id="container"></div>
38+
39+
</body>
40+
</html>

WebSocket/init-server/pom.xml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<parent>
6+
<groupId>edu.javacourse</groupId>
7+
<artifactId>examples</artifactId>
8+
<version>1.0-SNAPSHOT</version>
9+
<relativePath>../</relativePath>
10+
</parent>
11+
12+
<groupId>edu.javacourse.websocket</groupId>
13+
<artifactId>init-server</artifactId>
14+
<version>1.0-SNAPSHOT</version>
15+
<packaging>war</packaging>
16+
17+
<name>WebSocket Init Srver</name>
18+
19+
<dependencies>
20+
<dependency>
21+
<groupId>javax</groupId>
22+
<artifactId>javaee-api</artifactId>
23+
<version>7.0</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>org.slf4j</groupId>
27+
<artifactId>slf4j-api</artifactId>
28+
<scope>provided</scope>
29+
</dependency>
30+
</dependencies>
31+
32+
</project>
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package edu.javacourse.websocket;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
import javax.enterprise.concurrent.ManagedThreadFactory;
7+
import javax.naming.InitialContext;
8+
import javax.naming.NamingException;
9+
import javax.websocket.CloseReason;
10+
import javax.websocket.OnClose;
11+
import javax.websocket.OnOpen;
12+
import javax.websocket.Session;
13+
import javax.websocket.server.ServerEndpoint;
14+
import java.util.Date;
15+
16+
/**
17+
* @author Artem Pronchakov <artem.pronchakov@calisto.email>
18+
*/
19+
@ServerEndpoint("/helloEndpoint")
20+
public class HelloWebSocketEndpoint {
21+
22+
private static final Logger log = LoggerFactory.getLogger(HelloWebSocketEndpoint.class);
23+
24+
private ManagedThreadFactory managedThreadFactory;
25+
26+
public HelloWebSocketEndpoint() {
27+
log.debug("new HelloWebSocketEndpoint()");
28+
try {
29+
InitialContext context = new InitialContext();
30+
managedThreadFactory = (ManagedThreadFactory) context.lookup("java:jboss/ee/concurrency/factory/default");
31+
} catch (NamingException e) {
32+
e.printStackTrace();
33+
}
34+
}
35+
36+
@OnOpen
37+
public void open(Session session) {
38+
log.debug("Hello WebSocket opened: id: {}", session.getId());
39+
managedThreadFactory.newThread(new Worker(session)).start();
40+
}
41+
42+
class Worker implements Runnable {
43+
44+
private Session session;
45+
46+
public Worker(Session session) {
47+
this.session = session;
48+
}
49+
50+
@Override
51+
public void run() {
52+
while (session.isOpen()) {
53+
try {
54+
session.getBasicRemote().sendText("Hello client #" + session.getId() + ", server time is: " + new Date());
55+
Thread.sleep(2000);
56+
} catch (Exception e) {
57+
e.printStackTrace();
58+
break;
59+
}
60+
}
61+
}
62+
}
63+
64+
@OnClose
65+
public void close(CloseReason reason) {
66+
log.debug("Hello WebSocket closed: Reason: ", reason.getReasonPhrase());
67+
}
68+
69+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
3+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
4+
5+
<session-config>
6+
<session-timeout>
7+
30
8+
</session-timeout>
9+
</session-config>
10+
11+
<welcome-file-list>
12+
<welcome-file>index.html</welcome-file>
13+
</welcome-file-list>
14+
15+
</web-app>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Hello page</title>
6+
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
7+
<script language="JavaScript" type="text/javascript">
8+
$(function() {
9+
var websocket = new WebSocket("ws://localhost:8080/init-server/helloEndpoint");
10+
websocket.onopen = function() {
11+
$("#log").append($("<p>WebSocket connection has been established</p>"));
12+
};
13+
websocket.onclose = function() {
14+
$("#log").append($("<p>WebSocket connection has been closed</p>"));
15+
};
16+
websocket.onmessage = function(event) {
17+
var serverMessage = $("<p>" + event.data + "</p>");
18+
$("#container").prepend(serverMessage);
19+
};
20+
});
21+
</script>
22+
</head>
23+
<body>
24+
25+
<div id="log"></div>
26+
27+
<hr/>
28+
29+
<div id="container"></div>
30+
31+
</body>
32+
</html>

WebSocket/pom.xml

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,16 @@
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44

5-
<parent>
6-
<groupId>edu.javacourse</groupId>
7-
<artifactId>examples</artifactId>
8-
<version>1.0-SNAPSHOT</version>
9-
<relativePath>../</relativePath>
10-
</parent>
11-
125
<groupId>edu.javacourse</groupId>
136
<artifactId>websocket</artifactId>
147
<version>1.0-SNAPSHOT</version>
15-
<packaging>war</packaging>
8+
<packaging>pom</packaging>
169

1710
<name>WebSocket</name>
1811

19-
<dependencies>
20-
<dependency>
21-
<groupId>javax</groupId>
22-
<artifactId>javaee-api</artifactId>
23-
<version>7.0</version>
24-
</dependency>
25-
<dependency>
26-
<groupId>org.slf4j</groupId>
27-
<artifactId>slf4j-api</artifactId>
28-
<scope>provided</scope>
29-
</dependency>
30-
</dependencies>
12+
<modules>
13+
<module>init-client</module>
14+
<module>init-server</module>
15+
</modules>
3116

3217
</project>

WebSocket/src/main/webapp/index.html

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)