Answering this in case anyone comes here looking for an answer.
I would have thought this wouldn't work, as you're mixing HTTP and TCP, but it appears to be possible. I've just tested with v1.4.24. The trick is to specify a different port to check on the server line in the backend. Here's a snippet of config that works for me.
frontend httpfrontend
bind *:8080
mode http
option httplog
default_backend http-backend
backend http-backend
balance roundrobin
mode http
option httplog
option httpclose
reqadd X-Forwarded-Proto:\ http
server server1 localhost:8000
frontend tcpfrontend
bind *:1080
mode tcp
option tcplog
default_backend tcp-backend
backend tcp-backend
mode tcp
option tcplog
# specify the format of the health check to run on the backend
option httpchk GET /healthz HTTP/1.0\r\nUser-agent:\ LB-Check\ TCP
# check -> turn on checks for this server
# port 8000 -> send the checks to port 8000 on the backend server (rather than 9000)
# inter 60000 -> check every 60s
server server1 localhost:9000 check port 8000 inter 60000