Skip to content

Unable to communicate with LSP server/Server Not getting Initialized/WARNING: Unmatched response message: { #367

Open
@binojvr

Description

@binojvr

I have language server and language client written in Java using LSP4j.

Language Client

class WPLSPClient implements LanguageClient {

	private static final Logger logger = LoggerFactory.getLogger(WPLSPClient.class);

	@Override
	public void telemetryEvent(Object object) {
		logger.info("TELEMETRY");
       }
.................................

}

Language Server

public class WPLanguageServer extends AbstractLanguageServer implements LanguageServer, LanguageClientAware {

    private static final Logger logger = LoggerFactory.getLogger( WPLanguageServer.class );

    private final Runnable shutdownHandler;
    LanguageClient client;

    public WPLanguageServer( Runnable shutdownHandler ) {
    	super.setTextDocumentService(new WpTextDocumentService(this));
    	super.setWorkspaceService(new WpWorkspaceService(this));
        this.shutdownHandler = shutdownHandler;
    }
    
    @Override
    public void connect( LanguageClient client ) {
        this.client = client;
    }

	@Override
	public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
		Integer processId = params.getProcessId();
		if(processId != null) {
			setParentProcessId(processId.longValue());
		} else {
			logger.info("Missing Parent process ID!!");
			setParentProcessId(0);
		}
		
		ServerCapabilities capabilities = createServerCapabilities();
		InitializeResult result = new InitializeResult( capabilities );
        return CompletableFuture.completedFuture( result );
	}

    @Override
    public void initialized( InitializedParams params ) {
        client.logMessage( new MessageParams( MessageType.Info, "web performer LSP Server Initialized" ) );
    }

.............................................
}

Server Runner


	ServerSocket serverSocket = new ServerSocket( 8080 );
        Socket socket = serverSocket.accept();
        WPLanguageServer server = new WPLanguageServer( () -> {
            try {
                socket.shutdownInput();
            } catch ( IOException e ) {
            	logger.warn(e.getMessage());
                throw new UncheckedIOException( e );
            }
        } );
        Launcher<LanguageClient> launcher = LSPLauncher.createServerLauncher( server, socket.getInputStream(), socket.getOutputStream() );


        LanguageClient client = launcher.getRemoteProxy();
        server.connect( client );
        server.startServer();
        launcher.startListening();

Note: I have read the documentation and according implemented the above code without server.startServer(); it did not work for me.

Client launcher

clientSocket = new Socket("localhost", 8080);

			InputStream in = clientSocket.getInputStream();
			OutputStream out = clientSocket.getOutputStream();

			Launcher<LanguageServer> launcher = LSPLauncher.createClientLauncher(new WPLSPClient(), in, out, true, null);

			launcher.startListening();

			logger.info("launched listening started");

			OutputStreamWriter responseWriter = new OutputStreamWriter(out);

			Map<String, JsonRpcMethod> methods = ServiceEndpoints.getSupportedMethods(LanguageServer.class);
			MessageJsonHandler jsonHandler = new MessageJsonHandler(methods);

			InitializeParams iParams = getInitializeParams();
                       
			RequestMessage message = new RequestMessage();
			message.setJsonrpc("2.0");
			message.setMethod("initialize");
			message.setId(12);
			message.setParams(iParams);
                        String json = jsonHandler.serialize(message);

                     String header = String.format("Content-Length: %d\r\n\r\n", json.getBytes().length);

			responseWriter.write(header);
     		responseWriter.write(json);
			responseWriter.flush();

problems

  1. Language server is not starting and initialized ()
    Note: initialize(InitializeParams params) is called on getting the client request, but method initialized is nevercalled. Hence client doesn't receive message that server Initialized. (please refer Server Implementation)

  2. I have tried initializing from client but failed (Please refer Client launcher code )

3)Getting an following warning at client program

WARNING: Unmatched response message: {
  "jsonrpc": "2.0",
  "id": 12,
  "result": {
    "capabilities": {
      "textDocumentSync": 1,
      "hoverProvider": true,
      "completionProvider": {
        "resolveProvider": true,
        "triggerCharacters": [
          ".",
          ":",
          "?",
          "\u0026",
          "\"",
          "\u003d"
        ]
      },
      "definitionProvider": true,
      "referencesProvider": true,
      "documentSymbolProvider": true
    }
  }
}

Please help me to understand the problem. I am new to LSP and LSP 4j.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions