向所有应用用户发送消息

时间:2016-01-28 19:05:49

标签: java php android server

我有一个应用内功能,应该向该应用的所有其他用户发送消息。

这是我用来联系我服务器的Java代码:

    public void sendToServer(final String text) {


    new Thread(new Runnable() {
        @Override
        public void run() {

            try {

                String textParam = "text1=" + URLEncoder.encode(text, "UTF-8");

                String scriptUrlString = "http://www.example.com/example.php"


                URL scriptUrl = new URL(scriptUrlString);
                HttpURLConnection connection = (HttpURLConnection) scriptUrl.openConnection();
                connection.setDoOutput(true);
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                connection.setFixedLengthStreamingMode(textParam.getBytes().length);
                OutputStreamWriter contentWriter = new OutputStreamWriter(connection.getOutputStream());
                contentWriter.write(textParam);
                contentWriter.flush();
                contentWriter.close();

                InputStream answerInputStream = connection.getInputStream();
                final String answer = getTextFromInputStream(answerInputStream);


                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText(answer);
                    }
                });
                answerInputStream.close();
                connection.disconnect();



            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }).start();


}

public String getTextFromInputStream(InputStream inputStream){
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    StringBuilder stringBuilder = new StringBuilder();

    String line;
    try {
        while ((line = bufferedReader.readLine()) != null){
            stringBuilder.append(line);
            stringBuilder.append("\n");

        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return stringBuilder.toString().trim();
}

在我的服务器上,我运行了一个php脚本:

<?php
$text = $_POST["text1"];
$content = $_POST["inhalt"];
if($text != null){
  $logfile = fopen("logfile.txt", "a");
  $date = date("d.m.Y H:i:s");
  fwrite($logfile, $date."  Text: ".$text.$content"\n");
  fclose($logfile);
}else{
  echo("No Text");
}
?>

所有这一切都很好,我收回了发送到服务器的文本。但我想要的是将此文本发送给该应用程序的所有用户。这是否是正确的方式,还是我应该尝试完全不同的东西。

提前致谢并抱歉我的英语不好,我是德国人。

1 个答案:

答案 0 :(得分:0)

接收客户端消息的当前方法是正确的。但是为了让其他客户接收此方法,您需要另一种方法。此方法应询问服务器是否有任何新消息,服务器应响应该数据。应该像您想要更新消息一样经常调用此方法。此方法应与您当前的上传消息方法类似。所以这个想法是:

客户端向服务器发送消息。

- &GT; 服务器将消息保存在文件系统中。

所有客户都会在一段时间内询问是否有新消息。

- &GT; 当服务器有针对特定客户端的未读消息时,它将以此响应。

- &GT; 服务器应将文件系统中的消息标记为客户端X读取。

我希望你明白我的意思并知道如何编码:)如果没有,请随时问:)