JSON нужно делать не всегда, а либо в тех случаях, когда требуется, чтобы с API работал не только браузер, но и мобильные клиенты или еще какие-то (которым не нужны готовые данные в HTML, а нужен JSON для парсинга), или когда лучше, чтобы клиент был толстым. Еще JSON, очевидно, несколько облегчает отладку.
В целом, в идеале, бек-енд сайта должен уметь возвращать и HTML для браузера (который JS не нужно парсить => быстродействие на клиенте), и JSON для других целей, и, может быть, и что-то еще.
Так сделано в VK, например.
Это я про HTTP. Если WebSockets все поля кодируют в JSON - ничего страшного, ведь возможен вот такой финт ушами:
{"html": "здесь html"}
И можно еще вот так сделать, элегантно объединив преимущества HTML и часть преимуществ JSON:
{"html": "здесь html", "error": "OK"}
Я подобное в Googleовских сервисах видел. Интересное решение, и определенно имеет право на жизнь.