0

我知道这个问题对你们大多数人来说可能听起来很容易,但我坚持下去。

首先,我喜欢定义我想要实现的目标。在 Eclipse 上,我正在运行一段代码,通过特定端口发送一些数据,并通过 html 和 javascript,我得到它发送的那些并在屏幕上打印它们。

我有一个免费托管网站的帐户。我想在该网站上运行我的代码,例如 mywebsite.blahblah.com/... 并从我计算机上的 html 文件访问该网站,获取由 java 代码生成的那些值并将它们打印在屏幕上。

我不知道从哪里开始。代码是

java和html

import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.Collection;
import org.java_websocket.WebSocket;
import org.java_websocket.WebSocketImpl;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

public class GPSServer extends WebSocketServer {

static int port = 9876;

public GPSServer(int port) throws UnknownHostException {
    super(new InetSocketAddress(port));
}

public GPSServer(InetSocketAddress address) {
    super(address);
}

public void sendData(String s) {

    Collection<WebSocket> con = connections();
    synchronized (con) {
        for (WebSocket c : con) {
            c.send(s);
        }
    }
}

@Override
public void onOpen(WebSocket arg0, ClientHandshake arg1) {
    System.out.println(arg0.getRemoteSocketAddress().getAddress()
            .getHostAddress()
            + " connected to the server!");
}

@Override
public void onClose(WebSocket arg0, int arg1, String arg2, boolean arg3) {
    System.out.println(arg0 + " disconnected!");
}

@Override
public void onError(WebSocket arg0, Exception arg1) {
    arg1.printStackTrace();
    if (arg0 != null) {
    }
}

@Override
public void onMessage(WebSocket arg0, String arg1) {
    System.out.println(arg0 + ": " + arg1);

}

public static Runnable sendData() {

    Runnable r = new Runnable() {

        @Override
        public void run() {
            WebSocketImpl.DEBUG = true;
            GPSServer server;

            try {
                server = new GPSServer(GPSServer.port);
                server.start();

                System.out.println("GPS server started at port: "
                        + server.getPort());

                double longitude = 39.55;
                double latitude = 22.16;
                String lng = Double.toString(longitude);
                String ltd = Double.toString(latitude);
                String all = lng + "-" + ltd;

                while (true) {

                    server.sendData(all);
                    /*
                     * server.sendData(Double.toString(longitude));
                     * System.out.println("longitude sent...");
                     * server.sendData(Double.toString(latitude));
                     * System.out.println("latitude sent...");
                     */
                    Thread.sleep(5000);
                }
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }

            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    return r;
}

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

    Thread thread = new Thread(GPSServer.sendData());
    thread.start();
}
}

--

 <!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function WebSocketTest()
{

var lat;
var lng;
  if ("WebSocket" in window)
 {
 alert("WebSocket is supported by your Browser!");
 console.log("WebSocket is supported by your Browser!");
 // Let us open a web socket
 var ws = new WebSocket("ws://localhost:9876/echo");
 ws.onopen = function()
 {
    ws.send("Message to send");
    alert("Message is sent...");


 };







 ws.onmessage = function (evt)  { 

    var partsArray = evt.data.split('-');
    lng=partsArray[0];
    lat=partsArray[1];
    alert(lat);
    alert(lng);

    }; 






 ws.onclose = function() { 
     alert("Connection is closed...");
     console.log("Connection is closed...");
};



  }
  else
  {
     alert("WebSocket NOT supported by your Browser!");
  }
}

</script>
</head>
<body>
<div id="sse">
  <a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
<div>
<p id="para"> BASIC HTML!</p>
</div>
</body>
</html>

谢谢!

4

1 回答 1

0

我假设您对所有这些 Web 开发都很陌生。我还没有完全研究过你的代码,但基本的想法是你需要像 JSP 这样的服务器端脚本语言(当然是 JSP,因为你使用的是 Java 代码)。我希望你知道 Javascript 的基本思想是在客户端使用资源,或者动态加载数据。因此,如果您只关心从服务器向客户端显示一些值,您可以简单地制作一个 servlet 来打印您的数据。遵循 MVC 模式,

  • Controller== 制作一个 servlet 来处理用户的请求(基本上就是显示数据的链接)。收到请求后,在此控制器中设置您的模型(您也可以分别决定在 GET/POST 上做什么)。
  • Model== 制作一个抽象表示(Java 类)来保存所有要显示的数据。
  • 查看== 在这里您将收到模型。换句话说,这将是您的 HTML。您可以使用 JSP 助手来自定义视图,基本思想是控制如何将数据显示给用户(因此名称为视图)。HTML 将在运行时自动生成并传递给用户。

同样,我说我假设您对 Web 开发非常陌生。如果我没有很好地理解你的问题,请告诉我。享受编码。

于 2013-05-04T18:27:59.327 回答