add socket io support