我有一个应用内功能,应该向该应用的所有其他用户发送消息。
这是我用来联系我服务器的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 :(得分:0)
接收客户端消息的当前方法是正确的。但是为了让其他客户接收此方法,您需要另一种方法。此方法应询问服务器是否有任何新消息,服务器应响应该数据。应该像您想要更新消息一样经常调用此方法。此方法应与您当前的上传消息方法类似。所以这个想法是:
客户端向服务器发送消息。
- &GT; 服务器将消息保存在文件系统中。
所有客户都会在一段时间内询问是否有新消息。
- &GT; 当服务器有针对特定客户端的未读消息时,它将以此响应。
- &GT; 服务器应将文件系统中的消息标记为客户端X读取。
我希望你明白我的意思并知道如何编码:)如果没有,请随时问:)