我在我的Swift应用程序中使用SocketIO,服务器发出,客户端侦听。我想在用户开始输入时显示,并想知道如何完成此操作。我发现这样打字:
txtMessage.addTarget(self, action: #selector(self.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
func textFieldDidChange(textField: UITextField) {
//todo: how to let other clients know?
}
一旦我检测到打字,我该如何让其他客户知道呢?客户端本身是否可以执行socket.emit,或者我是否需要将其发送到服务器,并让服务器执行emit?
我尝试做一个socket.emit,socket.on永远不会得到信号。当服务器执行socket.emit时,我的socket.on侦听器确实收到了信号。
答案 0 :(得分:0)
执行以下操作:(这是在Javascript中,但概念就是如何进行此操作)
<强>客户端强>
const input = document.querySelector('input')
const writing = document.querySelector('p')
input.addEventListener('keyup', () => {
socket.emit('areTheyTyping', {
typing: true
})
if (input.value.length === 0) {
socket.emit('areTheyTyping', {
typing: false
})
}
})
socket.on('areTheyTyping', function(data) {
if (data.typing) {
writing.innerHTML = 'User is writing'
} else {
writing.innerHTML = ''
}
})
服务器强>
io.on('connection', function(socket) {
const _id = socket.id
socket.on('areTheyTyping', function(data) {
if(data.typing) {
io.emit('areTheyTyping', {typing: true})
} else {
io.emit('areTheyTyping', {typing: false})
}
})
})