Вы хотите, чтобы ваши обновления пользовательского интерфейса выполнялись в уже существующем потоке пользовательского интерфейса.
Лучший способ - использовать обработчик, который использует postDelayed для запуска Runnable после задержки (каждый запуск расписания следующий) ; очистите обратный вызов с помощью removeCallbacks.
Вы уже смотрите в нужном месте, поэтому посмотрите на это снова, возможно, уточните, почему этот образец кода не тот, который вы хотите. (См. Также ту же статью в Обновление пользовательского интерфейса из таймера ).
См. jsocket . Не использовал его сам. Прошло более 3 лет с момента последнего обновления (по состоянию на 26/6/2014).
* Используется flash: (
<script type='text/javascript'>
// Host we are connecting to
var host = 'localhost';
// Port we are connecting on
var port = 3000;
var socket = new jSocket();
// When the socket is added the to document
socket.onReady = function(){
socket.connect(host, port);
}
// Connection attempt finished
socket.onConnect = function(success, msg){
if(success){
// Send something to the socket
socket.write('Hello world');
}else{
alert('Connection to the server could not be estabilished: ' + msg);
}
}
socket.onData = function(data){
alert('Received from socket: '+data);
}
// Setup our socket in the div with the id="socket"
socket.setup('mySocket');
</script>
ws2s предназначен для подключения сокета к js-стороне браузера. Это сервер websocket, который преобразует websocket в сокет.
Схема ws2s
пример кода:
var socket = new WS2S("wss://ws2s.feling.io/").newSocket()
socket.onReady = () => {
socket.connect("feling.io", 80)
socket.send("GET / HTTP/1.1\r\nHost: feling.io\r\nConnection: close\r\n\r\n")
}
socket.onRecv = (data) => {
console.log('onRecv', data)
}
Вы можете использовать HTML5 Web Sockets
:
var connection = new WebSocket('ws://IPAddress:Port');
connection.onopen = function () {
connection.send('Ping'); // Send the message 'Ping' to the server
};
http://www.html5rocks.com/en/tutorials/websockets/basics/
Ваш сервер также должен прослушиваться с сервера WebSocket, такого как pywebsocket, иначе вы можете написать свой собственный, как описано в Mozilla
Дополнительно:
Обновить : Из проекта W3C в январе 2016 года:
Это будет возможно через интерфейс навигатора, как показано ниже:
http://raw-sockets.sysapps.org/# interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
navigator.tcpPermission.requestPermission({remoteAddress:"127.0.0.1", remotePort:6789}).then(
() => {
// Permission was granted
// Create a new TCP client socket and connect to remote host
var mySocket = new TCPSocket("127.0.0.1", 6789);
// Send data to server
mySocket.writeable.write("Hello World").then(
() => {
// Data sent sucessfully, wait for response
console.log("Data has been sent to server");
mySocket.readable.getReader().read().then(
({ value, done }) => {
if (!done) {
// Response received, log it:
console.log("Data received from server:" + value);
}
// Close the TCP connection
mySocket.close();
}
);
},
e => console.error("Sending error: ", e);
);
Решение, которое вы действительно ищете, это веб-сокеты. Однако в проекте хром были разработаны некоторые новые технологии, которые являются прямыми TCP-соединениями TCP chromium