Giter Site home page Giter Site logo

embedded-jetty-websocket-examples's Introduction

The contents of this repository have been moved

See: https://github.com/jetty/jetty-examples for the current and up-to-date Jetty examples.

Jetty API Path
Jetty 12 jakarta.websocket API embedded/ee10-websocket-jakarta-api
Jetty 12 jetty websocket API embedded/ee10-websocket-jetty-api
Jetty 11 jakarta.websocket API embedded/websocket-jakarta-api
Jetty 11 jetty websocket API embedded/websocket-jetty-api
Jetty 10 javax.websocket API embedded/websocket-jakarta-api
Jetty 10 jetty websocket API embedded/websocket-jetty-api
Jetty 9 javax.websocket API embedded/websocket-jakarta-api
Jetty 9 jetty websocket API embedded/websocket-jetty-api

embedded-jetty-websocket-examples's People

Contributors

joakime avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

embedded-jetty-websocket-examples's Issues

Migrating from jetty 9 to jetty 11

in my jetty 9 project i was having a jetty websocket client connecting to a server with the following code

connect("wss://janus.conf.meetecho.com/ws", true, "Sec-WebSocket-Protocol", "janus-protocol");

public void connect(String wsurl, Boolean addheader, String CustomHeader, String HeaderValue) {
		try {
			
			URI serveruri = new URI(wsurl);
			
			 // Start the WebSocket client in a separate thread
            Runnable connectRunnable = new Runnable() {

				@Override
				public void run() {
					try {
						request = new ClientUpgradeRequest();
						if(addheader) {
							request.setHeader(CustomHeader, HeaderValue);
						}
						
						Wsclient.start();
						
						wsEvents = new MyWSHandler();
						
						Clientsession = Wsclient.connect(wsEvents, serveruri, request);
						
					} catch (Exception e) {
						handleException("connect", e);
					}
					
				}
            	
            };
            
            Thread t = new Thread(connectRunnable);
    		t.setDaemon(true);
    		t.start();
            
		} catch (Exception e) {
			
			handleException("connect", e);
			
		}
		
	}

I was able to connect normally to the server with jetty 9. but when i migrated to jetty 11 i always get this error :

org.eclipse.jetty.websocket.core.exception.UpgradeException: Failed to upgrade to websocket: Unexpected HTTP Response Status Code: 502 Bad Gateway

i am able to connect to the server with many other websocket clients as well . only with jetty 11 i encountered with this error

How do you close the session?

In the example provided, the line:
((LifeCycle) container).stop();

Cause the following Exception, what's the proper way to stop the websocketclient?

17:15:42 ERROR    java.lang.InterruptedException
	at java.lang.Object.wait(Native Method)
	at java.lang.Thread.join(Unknown Source)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:159)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
	at org.eclipse.jetty.client.HttpClient.doStop(HttpClient.java:255)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
	at org.eclipse.jetty.websocket.client.WebSocketClient.doStop(WebSocketClient.java:400)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:142)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:160)
	at org.eclipse.jetty.websocket.jsr356.ClientContainer.doStop(ClientContainer.java:280)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)

Connection declined and throws error

Socket Connected: WebSocketSession[SERVER,to=PT30S,WSCoreSession@dd41b59{SERVER,WebSocketSessionState@7574a363{CONNECTED,i=NO-OP,o=NO-OP,c=null},[ws://10.194.5.32:8080/events/,null,false.[]],af=true,i/o=4096/4096,fs=65536}->JettyWebSocketFrameHandler@5877331f[org.eclipse.jetty.demo.EventSocket],JettyWebSocketFrameHandler@5877331f[org.eclipse.jetty.demo.EventSocket]]
java.nio.channels.ClosedChannelException
	at org.eclipse.jetty.websocket.core.internal.WebSocketSessionState.onEof(WebSocketSessionState.java:169)
	at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.onEof(WebSocketCoreSession.java:244)
	at org.eclipse.jetty.websocket.core.internal.WebSocketConnection.fillAndParse(WebSocketConnection.java:478)
	at org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFillable(WebSocketConnection.java:336)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
	at org.eclipse.jetty.io.SocketChannelEndPoint$1.run(SocketChannelEndPoint.java:101)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:412)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:381)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:268)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:138)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:378)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)
	at java.base/java.lang.Thread.run(Thread.java:834)
Socket Closed: [1006] Session Closed

Examples for jetty 10 or 11

The examples presented here are for Jetty 9.x
With Jetty 10 the Websocket API changed, are there examples available for that as well?

Javascript example?

Ive been trying to get this working with a javascript client.
Used the one a thttp://www.websocket.org/echo.html and pointed the location at localhost:8080
Watching it using Chrome dev tool / Network I see it doesn't respond at all to connect request at ws:localhost:8080 and when I try secure WebScoket the java console output is : 2013-12-05 14:45:10.877:WARN:oejh.HttpParser:qtp1201003945-29: badMessage: 400 Illegal character for HttpChannelOverHttp@4ab7532a{r=0,a=IDLE,uri=-}

But thats the only life I can get out of it..

Any advice?
Thanks
Vida

Issue with wss

When changing the uri to "wss://localhost:8080/events/" in EventClient, I get the error:

2015-03-21 19:40:41.411:INFO::main: Logging initialized @303ms
java.io.IOException: Cannot init SSL
    at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newConnection(WebSocketClientSelectorManager.java:96)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.createEndPoint(SelectorManager.java:735)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processConnect(SelectorManager.java:676)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:640)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:607)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:545)
    at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Unknown Source)
java.io.IOException: Cannot init SSL
    at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newConnection(WebSocketClientSelectorManager.java:96)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.createEndPoint(SelectorManager.java:735)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processConnect(SelectorManager.java:676)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:640)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:607)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:545)
    at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Unknown Source)
java.util.concurrent.ExecutionException: java.io.IOException: Cannot init SSL
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:123)
    at ws.EventClient.main(EventClient.java:26)
Caused by: java.io.IOException: Cannot init SSL
    at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newConnection(WebSocketClientSelectorManager.java:96)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.createEndPoint(SelectorManager.java:735)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processConnect(SelectorManager.java:676)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:640)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:607)
    at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:545)
    at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Unknown Source)

I've changed the client like this:

    SslContextFactory sslContextFactory = new SslContextFactory();
    Resource keyStoreResource = Resource.newResource(EventClient.class.getResource("/keystore.jks"));
    sslContextFactory.setKeyStoreResource(keyStoreResource);
    sslContextFactory.setKeyStorePassword("");
    sslContextFactory.setKeyManagerPassword("");
    WebSocketClient client = new WebSocketClient(sslContextFactory);

using a self-signed certificate, now the error with a certificate with an empty password is a NullPointerException on client or a non-empty password is java.io.IOException: Keystore was tampered with, or password was incorrect (making sure the password is correct of course)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.