groovyhttpclientcometd

Groovy cometd client LongPollingTransport.create() throws MissingMethodException


My groovy Code :

import org.cometd.client.BayeuxClient;
import org.cometd.client.transport.ClientTransport;
import org.cometd.client.transport.LongPollingTransport;
import org.eclipse.jetty.client.HttpClient as MyHttpClient    

def myurl = "http://192.168.11.170:8080/"

MyHttpClient httpClient = new MyHttpClient()

httpClient.start()

println (httpClient.GET(myurl).getStatus())

BayeuxClient client = new BayeuxClient(myurl, LongPollingTransport.create(null))
client.handshake()
client.waitFor(1000, BayeuxClient.State.CONNECTED)

Here I am trying to make a handshake. It is just the documentation example code shown here https://docs.cometd.org/current/apidocs/org/cometd/client/BayeuxClient.html. But i am getting error shown below . Don't know What i am doing wrong ?

Output:

200
groovy.lang.MissingMethodException: No signature of method: static org.cometd.client.transport.LongPollingTransport.create() is applicable for argument types: (null) values: [null]
Possible solutions: grep(), terminate(), iterator(), accept(java.lang.String), accept(java.lang.String), print(java.lang.Object)

Solution

  • Javadoc of BayeuxClient is completely out of sync with LongPollingTransport class - there is no such method as LongPollingTransport.create(arg).

    Instead you could try using regular constructor of this class, e.g.

    BayeuxClient client = new BayeuxClient(myurl, new LongPollingTransport([:], httpClient))
    

    Reference: https://docs.cometd.org/current/apidocs/org/cometd/client/transport/LongPollingTransport.html#LongPollingTransport-java.util.Map-org.eclipse.jetty.client.HttpClient-

    The first parameters is a map of options (empty in this example) and the second one is an instance of Jetty's HttpClient you import as MyHttpClient.