有一个任务 - 在android上写一个聊天。还有一个聊天服务器。据我了解,一切都需要在套接字上完成。但是我不知道从哪里开始 :( 首先,很难找到一个可以正常工作的库或一种可以提供预期结果的方法。我希望可以通过scarlet
from 完成所有工作,Tinder
但是出了点问题,并且依赖关系没有充分连接。将所需的java版本设置为.后出现很多问题。build.gradle
有很多库,甚至更多的手工方法,但由于服务器地址使用协议而大部分都消失了http/https
,我使用wss
.目前,我的最后一次尝试是从这里进行的,请求也没有发送:
val wsFactory = WebSocketFactory()
.createSocket("wss://server/")
.addHeader("token", context!!.getSharedPreferences("app_data", 0).getString("access_token", "")!!)
或者我无法理解创建聊天的原则。我以前做过改造,也许我期待正常的请求响应行为。但从我读到的内容来看,这里的一切都以大致相同的方式实现。也有这样的尝试:
private fun instantiateWebSocket() {
val client = OkHttpClient()
val request: Request = Request.Builder()
.url("wss://server/")
.addHeader("token", context!!.getSharedPreferences("app_data", 0).getString("access_token", "")!!)
.build()
Timber.i(request.toString())
val socketListener = SocketListener(context!!)
webSocket = client.newWebSocket(request, socketListener)
webSocket!!.send("0909")
}
class SocketListener(cont: Context) : WebSocketListener() {
var context: Context = cont
override fun onOpen(webSocket: WebSocket, response: Response) {
Timber.i(response.toString())
Runnable { Toast.makeText(context, "Connection Established!", Toast.LENGTH_LONG).show() }
}
override fun onMessage(webSocket: WebSocket, text: String) {
val jsonObject = JSONObject()
try {
jsonObject.put("message", text)
jsonObject.put("byServer", true)
} catch (e: JSONException) {
e.printStackTrace()
}
}
init {
this.context = cont
}
}
在这里也没有发送请求。我究竟做错了什么?也许有人有创建聊天的经验并有工作方式?
我正在为像我这样的人写这个答案 - 那些对套接字和如何编写聊天一无所知的人。我花了一点时间研究,最后我设法实现了我需要的东西。我使用 OkHttp 来创建聊天。首先,让我们创建一个客户端:
接下来,我们创建一个请求:
最后创建套接字:
与人交谈后,需要关闭连接:
要发送消息,您需要使用以下功能
send
:仅此而已:) 事实证明它并不像起初看起来那么困难。也许有人会有意见/建议 - 我会很高兴地听。