0

ほとんどの人にとって質問は簡単に聞こえるかもしれませんが、私はそれに行き詰まっています。

まず第一に、私が達成しようとしていることを定義するのが好きです。Eclipseでは、特定のポートを介してデータを送信するコードを実行しています。htmlとjavascriptを介して、送信されたものを取得して画面に出力しています。

無料のホスティング Web サイトのアカウントを持っています。mywebsite.blahblah.com/... などのその Web サイトでコードを実行し、コンピューターの html ファイルからその Web サイトにアクセスし、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 のようなサーバー側スクリプト言語が必要だということです (もちろん、Java コードを使用しているので JSP です)。Javascript の基本的な考え方は、クライアント側でリソースを使用すること、またはデータを動的にロードすることです。したがって、サーバーからクライアントに値を表示することのみに関心がある場合は、データを出力するサーブレットを簡単に作成できます。MVCパターンに従って、

  • Controller== ユーザーからのリクエストを処理するサーブレットを作成します (つまり、基本的にデータを表示するリンク)。リクエストを受け取ったら、このコントローラーにモデルを設定します (GET/POST で何をするかを個別に決定することもできます)。
  • Model== 表示されるすべてのデータを保持する抽象表現 (Java のクラス) を作成します。
  • View== ここにモデルが表示されます。つまり、これが HTML になります。JSPヘルパーを使用してビューをカスタマイズできます。基本的な考え方は、ユーザーにデータを表示する方法を制御することです(したがってビューという名前です)。HTML は実行時に自動的に生成され、ユーザーに渡されます。

繰り返しますが、私はあなたが Web 開発の初心者であると想定しています。あなたの質問をよく理解していない場合はお知らせください。コーディングをお楽しみください。

于 2013-05-04T18:27:59.327 に答える