2016-01-28 44 views
1

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

这是我用它来联系我的服务器我的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"); 
} 
?> 

所有这些工作完全正常,我回来我发送给服务器的文本。但我想要的是将此文本发送给应用程序的所有用户。这是甚至是正确的方式,还是应该尝试一些完全不同的东西。

在此先感谢,对不起我的英文不好,我是德国人。

+0

实施推送通知。 – Rohit5k2

+0

我有那个imlemented,但这不是我的问题 – Dan

回答

0

接收客户邮件的当前方法是正确的。但为了让其他客户接受这种方法,您需要使用其他方法。这种方法应询问服务器是否有新消息,服务器应该使用该数据进行响应。应该尽可能经常调用此方法,因为您希望更新消息。此方法应该与您当前的上传消息方法相似。所以这个想法是:

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

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

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

- >当服务器有特定客户端的未读消息时,它会以此作为响应。

- >Server作为阅读客户端X.应当标注在文件系统,消息

我希望你明白我的意思,并知道如何将其代码:)如果没有,随意地问: )

+0

谢谢。我会尽我所能,如果我做不到,我会问你:D – Dan

相关问题