在Swift

时间:2016-11-29 08:17:03

标签: swift sockets socket.io swift2

我在我的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侦听器确实收到了信号。

1 个答案:

答案 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})
    }
  })
})