我想使用
通过api im在我的应用程序中发送消息(https://github.com/devslopes-learn/mac-chat-api)
总是在我尝试发送消息时,我在heroku终端日志中收到此错误:
我尝试了一切,但似乎无法弄清为什么会发生。 顺便说一句,我正在Udemy上的一门课程中使用此api学习。
这是我的发射物
func sendMessage(messageBody: String, userId: String, channelId: String, completion: @escaping CompletionHandler) {
let user = UserDataService.instance
socket.emit("newMessage", messageBody, userId, channelId, user.name, user.avatarName, user.avatarColor)
completion(true)
}
在这里我使用函数:
@IBAction func sendMsgPressed(_ sender: Any) {
if AuthService.instance.isLoggedIn {
guard let channelId = MessageService.instance.selectedChannel?.id else { return }
guard let message = messageTxtField.text else { return }
SocketService.instance.sendMessage(messageBody: message, userId: UserDataService.instance.id, channelId: channelId) { (success) in
if success {
self.messageTxtField.resignFirstResponder()
self.messageTxtField.text = ""
}
}
}
}
答案 0 :(得分:0)
浏览Swift here的SocketIOClient API文档,您没有传递正确的SocketData
对象类型,而是传递了各个参数。您应该为数据创建一个符合SocketData
的对象,以确保您的数据可以在socket.io数据包中表示。下面基本上是对文档中示例的重新编写:
struct CustomData: SocketData {
let messageBody: String
let userId: Int
let channelId: Int
let userName: String
let avatarColor: String
func socketRepresentation() -> SocketData {
return [
"messageBody": name,
"userId": userId,
"channelId": channelId,
"userName": userName,
"avatarColor": avatarColor,
]
}
}
let customData = CustomData(...)
socket.emit("newMessage", customData)