如何使我的restful服务器启用支持websocket客户端请求(可切换)

时间:2016-02-27 00:00:15

标签: java api websocket jetty restful-url

HTTP客户端可以从我的restful API获取请求,但websocket客户端收到错误,我的服务器无法切换​​协议。

我是协议编码的新手,如何使我的服务器支持(和切换协议)websocket客户端请求。

我的码头宁静的代码:

import java.awt.List;
import java.awt.event.ItemEvent;
import java.security.PublicKey;
import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

@Path("lnu")
public class Generator {

    Result ress = new Result("mahdi84");
    public static String resul1;
    public static ArrayList<Result> lst = new ArrayList<Result>();
    public String txt = "TEXT";

    @GET
    @Path("mahdi")
    @Produces(MediaType.APPLICATION_JSON)

    public Result  mahdi(){

        JSONObject json = new JSONObject();
        json.put("validTime", "2016-02-24T11:00:00Z");
        JSONArray jsonArray = new JSONArray();
        JSONObject obj = new JSONObject();

        obj.put("mcc", resul1);
        obj.put("temprature", resul1+1);
        obj.put("Humidity", resul1+10);
        jsonArray.add(obj);
        json.put("\n  JSONdata --> ", jsonArray);


    ress.setInput(Double.parseDouble(resul1));
    ress.setOutput(Double.parseDouble(resul1));
    ress.setTestVar(resul1);
    ress.setTestVar(txt);
    ress.setTestVar2(json);

    lst.add(ress);

        return ress;
    }
    @POST
    @Path("/post")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createDataInJSON(String data) { 

        String result = "---------> "+data;
        resul1= data;

        return Response.status(201).entity(result).build(); 
    }

    static class Result{
        double input;
        double output;
        String action;
        Object testVar;
        Object testvar3;
        JSONObject testVar2;

        public Result(){}

        public Object getTestvar3() {
            return testvar3;
        }

        public void setTestvar3(Object testvar3) {
            this.testvar3 = testvar3;
        }


        public JSONObject getTestVar2() {
            return testVar2;
        }



        public void setTestVar2(JSONObject testVar2) {
            this.testVar2 = testVar2;
        }


        public Object getTestVar() {
            return testVar;
        }


        public void setTestVar(Object testVar) {
            this.testVar = testVar;
        }

        public Result(String action) {
            this.action = action;
        }

        public String getAction() {
            return action;
        }

        public void setAction(String action) {
            this.action = action;
        }

        public double getInput() {
            return input;
        }

        public void setInput(double input) {
            this.input = input;
        }

        public double getOutput() {
            return output;
        }

        public void setOutput(double output) {
            this.output = output;
        }
    }
}

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class RestServer {

    public static void main(String[] args) throws Exception {

        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        Server jettyServer = new Server(8080);
        jettyServer.setHandler(context);

        ServletHolder jerseyServlet = context.addServlet(
                org.glassfish.jersey.servlet.ServletContainer.class, "/*");
        jerseyServlet.setInitOrder(0);

        jerseyServlet.setInitParameter("jersey.config.server.provider.classnames",
                Generator.class.getCanonicalName());

        try {
            jettyServer.start();
            System.out.println(" open the browser on http://localhost:8080/lnu/mahdi");
            jettyServer.join();
        } finally {
            jettyServer.destroy();
        }
    }
}

0 个答案:

没有答案