As far as I can tell none of these channel events actually fire for my trial account, so I can't say if any of this actually works, but I'm going to leave it here anyway.
There's an event called
CHANNEL_COUNT_UPDATE that supposedly returns the id of the channel and the number of members.
So all you should need to do is check if the channel is the one you want to watch, loop through the members and collect their info.
Lua Code:
local f = CreateFrame("frame")
f:RegisterEvent("CHANNEL_COUNT_UPDATE")
f:SetScript("OnEvent", function(self,event,id,count)
local channel = GetChannelDisplayInfo(id)
if channel ~= "iron" then return end
for i=1,count do
local name = GetChannelRosterInfo(id,i)
-- str:SetText(name) or something
end
end)
I think class colors are going to be more trouble than they're worth for this particular venture, but you could store a table of [names] = class whenever you get the opportunity to collect them.