Questo contenuto non è disponibile nella lingua selezionata.
15.2. Create a WebSocket Application
- A Java client or a WebSocket enabled HTML client. You can verify HTML client browser support at this location: http://caniuse.com/websockets
- A WebSocket server endpoint class.
- A
jboss-web.xml
file configured to enable WebSockets. - Project dependencies configured to declare a dependency on the WebSocket API.
- Enable the
NIO2
connector in theweb
subsystem of the JBoss EAP server configuration file. If you installed the Native Components for your operating system with the JBoss EAP installation and have also installed Apache Portability Runtime (APR), you can instead choose to enable theAPR
connector.
Note
Procedure 15.1. Create the WebSocket Application
Create the JavaScript HTML client.
The following is an example of a WebSocket client. It contains these JavaScript functions:lconnect()
: This function creates the WebSocket connection passing the WebSocket URI. The resource location matches the resource defined in the server endpoint class. This function also intercepts and handles the WebSocketonopen
,onmessage
,onerror
, andonclose
.sendMessage()
: This function gets the name entered in the form, creates a message, and sends it using a WebSocket.send() command.disconnect()
: This function issues the WebSocket.close() command.displayMessage()
: This function sets the display message on the page to the value returned by the WebSocket endpoint method.displayStatus()
: This function displays the WebSocket connection status.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the WebSocket server endpoint.
You can create a WebSocket server endpoint using either of the following methods.The code example below uses the annotated endpoint approach and handles the following events.Programmatic Endpoint
: The endpoint extends the Endpoint class.Annotated Endpoint
: The endpoint class uses annotations to interact with the WebSocket events. It is simpler to code than the programmatic endpoint
- The
@ServerEndpoint
annotation identifies this class as a WebSocket server endpoint and specifies the path. - The
@OnOpen
annotation is triggered when the WebSocket connection is opened. - The
@OnMessage
annotation is triggered when a message is sent to the WebSocket connection. - The
@OnClose
annotation is triggered when the WebSocket connection is closed.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the jboss-web.xml file.
You must create the<enable-websockets>
element in the applicationWEB-INF/jboss-web.xml
and set it totrue
.<?xml version="1.0" encoding="UTF-8"?> <!--Enable WebSockets --> <jboss-web> <enable-websockets>true</enable-websockets> </jboss-web>
<?xml version="1.0" encoding="UTF-8"?> <!--Enable WebSockets --> <jboss-web> <enable-websockets>true</enable-websockets> </jboss-web>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Declare the WebSocket API dependency in your project POM file.
If you use Maven, you add the following dependency to the projectpom.xml
file.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the JBoss EAP server.
Configure thehttp
<connector>
in theweb
subsystem of the server configuration file to use theNIO2
protocol.- Start the JBoss EAP server.
- Launch the Management CLI using the command for your operating system.For Linux:For Windows:
EAP_HOME/bin/jboss-cli.sh --connect
EAP_HOME/bin/jboss-cli.sh --connectEAP_HOME/bin/jboss-cli.sh --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow EAP_HOME\bin\jboss-cli.bat --connect
EAP_HOME\bin\jboss-cli.bat --connectEAP_HOME\bin\jboss-cli.bat --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Enable the
NIO2
or theAPR
connector in theweb
subsystem of the JBoss EAP server configuration file.- Type the following command to use the non blocking Java
NIO2
connector protocol:/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - If you have installed the Apache Portability Runtime (APR), you can type the following commands to use the Apache Portable Runtime
APR
native connector protocol:/subsystem=web:write-attribute(name=native,value=true) /subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11AprProtocol)
/subsystem=web:write-attribute(name=native,value=true) /subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11AprProtocol)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
For either command, you should see the following result:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Notify the server to reload the configuration.
:reload
:reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You should see the following result:{ "outcome" => "success", "result" => undefined }
{ "outcome" => "success", "result" => undefined }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Review the changes to the JBoss EAP server configuration file. The
web
subsystem should now contain the following XML for thehttp
<connector>
.For theNIO2
connector configuration:Copy to Clipboard Copied! Toggle word wrap Toggle overflow For theAPR
connector configuration:Copy to Clipboard Copied! Toggle word wrap Toggle overflow