2016-11-29 3 views
0

Я использую SocketIO в моем приложении Swift, где сервер испускает, и клиент слушает. Я хочу показать, когда пользователь начинает печатать, и задавался вопросом, как это сделать. Я обнаруживаю типизацию следующим образом:Индикатор ввода в Swift

txtMessage.addTarget(self, action: #selector(self.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged) 

func textFieldDidChange(textField: UITextField) { 
    //todo: how to let other clients know?    
} 

Как только я обнаруживаю типизацию, как мне позволить другим клиентам узнать об этом? Возможно ли, чтобы клиент сам выполнял функцию socket.emit, или мне нужно отправить его на сервер, и чтобы сервер выполнял эмиссию?

Я пробовал делать socket.emit, socket.on никогда не получает сигнал. Когда сервер выполняет socket.emit, мои слушатели socket.on получают сигнал.

ответ

0

ли что-то вроде следующего: (Это в JavaScript, но концепция здесь, как вы бы делать это)

Client

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}) 
    } 
    }) 
}) 
Смежные вопросы