Skip to content

Commit

Permalink
✄ add blade websocket server
Browse files Browse the repository at this point in the history
  • Loading branch information
hellokaton committed Sep 17, 2016
1 parent 433b29c commit af14210
Show file tree
Hide file tree
Showing 5 changed files with 232 additions and 88 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.blade.websocket;

import com.blade.exception.BladeException;

public class WebSocketException extends BladeException {

/**
*
*/
private static final long serialVersionUID = -5109944185187744851L;

public WebSocketException() {
super();
}

public WebSocketException(String message, Throwable cause) {
super(message, cause);
}

public WebSocketException(String message) {
super(message);
}

public WebSocketException(Throwable cause) {
super(cause);
}

}
13 changes: 13 additions & 0 deletions blade-core/src/main/java/com/blade/websocket/WebSocketServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.blade.websocket;

public interface WebSocketServer {

void start(int port) throws WebSocketException;

void start(int port, String context) throws WebSocketException;

void stop() throws WebSocketException;

void addEndpoints(Class<?>... endPoints);

}
38 changes: 38 additions & 0 deletions blade-websocket-jetty/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.bladejava</groupId>
<artifactId>blade</artifactId>
<version>1.0</version>
</parent>
<artifactId>blade-websocket-jetty</artifactId>
<version>0.0.1</version>
<name>blade-websocket-jetty</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jetty.version>9.2.12.v20150709</jetty.version>
</properties>

<dependencies>
<dependency>
<groupId>com.bladejava</groupId>
<artifactId>blade-core</artifactId>
<version>${blade-core.version}</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-server-impl</artifactId>
<version>${jetty.version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.blade.websocket;

import javax.websocket.server.ServerContainer;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;

public class JettyWebSocketServer implements WebSocketServer {

private Server server;
private ServletContextHandler context;
private ServerContainer wscontainer;
private Class<?>[] endPoints;

@Override
public void start(int port) throws WebSocketException{
this.start(port, "/");
}

@Override
public void start(int port, String contextPath) throws WebSocketException{
server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setPort(port);
server.addConnector(connector);

// Setup the basic application "context" for this application at "/"
// This is also known as the handler tree (in jetty speak)
context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath(contextPath);
server.setHandler(context);
try {
// Initialize javax.websocket layer
wscontainer = WebSocketServerContainerInitializer.configureContext(context);
if (null != endPoints) {
// Add WebSocket endpoint to javax.websocket layer
for (int i = 0; i < endPoints.length; i++) {
wscontainer.addEndpoint(endPoints[i]);
}
}
server.start();
server.dump(System.err);
server.join();
} catch (Throwable t) {
throw new WebSocketException(t);
}
}

@Override
public void stop() throws WebSocketException{
try {
server.stop();
} catch (Exception e) {
throw new WebSocketException(e);
}
}

@Override
public void addEndpoints(Class<?>... endPoints) {
this.endPoints = endPoints;
}

}
176 changes: 88 additions & 88 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,89 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.bladejava</groupId>
<artifactId>blade</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

<name>blade</name>
<url>https://github.com/biezhi/blade</url>

<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<servlet.version>3.0.1</servlet.version>
<junit.version>4.12</junit.version>
<slf4j-api.version>1.7.21</slf4j-api.version>
<slf4j-log4j12.version>1.7.21</slf4j-log4j12.version>
<blade-core.version>1.6.7-alpha</blade-core.version>
<blade-kit.version>1.3.3</blade-kit.version>
<blade-aop.version>1.0.0</blade-aop.version>
<blade-embed-jetty.version>0.0.4</blade-embed-jetty.version>
</properties>

<modules>
<module>blade-kit</module>
<module>blade-core</module>
<module>blade-embed-jetty</module>
<module>blade-auth</module>
<module>blade-aop</module>
<module>blade-starter</module>
</modules>

<repositories>
<repository>
<id>oss-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.bladejava</groupId>
<artifactId>blade</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

<name>blade</name>
<url>https://github.com/biezhi/blade</url>

<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<servlet.version>3.0.1</servlet.version>
<junit.version>4.12</junit.version>
<slf4j-api.version>1.7.21</slf4j-api.version>
<slf4j-log4j12.version>1.7.21</slf4j-log4j12.version>
<blade-core.version>1.6.7-alpha</blade-core.version>
<blade-kit.version>1.3.3</blade-kit.version>
<blade-aop.version>1.0.0</blade-aop.version>
<blade-embed-jetty.version>0.0.4</blade-embed-jetty.version>

</properties>

<modules>
<module>blade-kit</module>
<module>blade-core</module>
<module>blade-embed-jetty</module>
<module>blade-auth</module>
<module>blade-aop</module>
<module>blade-starter</module>
<module>blade-websocket-jetty</module>
</modules>

<repositories>
<repository>
<id>oss-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

</project>

0 comments on commit af14210

Please sign in to comment.