Vert.x — довольно новый проект, который уже достиг статуса 1.0 и имеет растущее сообщество. Согласно их веб-сайту Vert.x это: Легкая разработка асинхронных приложений для современного Интернета и предприятий. Если вы знакомы с Node.js, то, скорее всего, вы будете чувствовать себя как дома с Vert.x. Vert.x также позволяет вам использовать любимый язык, такой как Java, Ruby, Groovy или JavaScript, с поддержкой Scala и Python, которые появятся в будущем. Сегодня я расскажу об очень простой демонстрации того, как попробовать Vert.x с использованием Java.
Vert.x в настоящее время использует Apache Ant, и мне было любопытно начать использовать Vert.x, но без необходимости настройки Ant и т. Д. Ниже приведены шаги, которые я предпринял, чтобы пример WebSockets работал на моей машине с OS X без использования Ant.
Во-первых, вам нужно установить Java JDK 1.7, а это значит, что если вы используете OS X, то вам нужно запустить Lion 10.7.2+. Смотрите мой предыдущий пост о том, как установить JDK 1.7 на OS X.
В какой-то момент кажется, что артефакты Vert.x будут в Maven Central, но до тех пор вы можете скачать эти файлы здесь . После того, как вы извлекли файлы в удобном месте на жестком диске установить путь к точке в Vert.x бен папку. Мой файл .bash_profile в моем случае выглядит так:
export PATH=/Users/chad3925/vert.x-1.0.final/bin:$PATH
Из терминала вы сможете запустить следующую команду:
$ vertx version
Используя некоторый пример кода, я немного изменил его:
package com.giantflyingsaucer.websocketsexample; import org.vertx.java.core.Handler; import org.vertx.java.core.buffer.Buffer; import org.vertx.java.core.http.HttpServerRequest; import org.vertx.java.core.http.ServerWebSocket; import org.vertx.java.deploy.Verticle; public class WebsocketsExample extends Verticle { public void start() { vertx.createHttpServer().websocketHandler(new Handler<ServerWebSocket>() { public void handle(final ServerWebSocket ws) { if (ws.path.equals("/myapp")) { ws.dataHandler(new Handler<Buffer>() { public void handle(Buffer data) { ws.writeTextFrame(data.toString()); // Echo it back } }); } else { ws.reject(); } } }).requestHandler(new Handler<HttpServerRequest>() { public void handle(HttpServerRequest req) { if (req.path.equals("/")) req.response.sendFile("ws.html"); // Serve the html } }).listen(8080); } }
Grab a copy of the ws.html file from the GitHub repo and save it to where you plan to keep your resulting compiled binaries.
I used Netbeans 7.1 to create a new Maven application called WebsocketsExample and then manually brought in the dependancies (since they are not yet on Central when this article was written). My pom.xml looks like this:
<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.giantflyingsaucer</groupId> <artifactId>WebsocketsExample</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>WebsocketsExample</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.vertx</groupId> <artifactId>vertx-core</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.vertx</groupId> <artifactId>vertx-platform</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> <version>3.4.2.Final</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>1.9.7</version> </dependency> </dependencies> </project>
Note: Not all the dependancies in the above file are required for this example, I added some for additional future experimentation.
Do a clean build on the project and then drop back into the Terminal. Depending on your setup the following will differ but this is how I ran the example:
$ vertx run com.giantflyingsaucer.websocketsexample.WebsocketsExample -cp ~/NetBeansProjects/WebsocketsExample/target/classes/
|
Go to the following address in a web browser that supports websockets: http://localhost:8080
At this point if all went well you should have a server running that will talk to the web browser with websockets. You can find plenty more examples including ones for Javascript, Ruby, etc. here: https://github.com/purplefox/vert.x/tree/master/src/examples
Make sure to check out the Vert.x Google Group as well as their blog. They have some initial benchmarks posted there and are quite impressive so far.