No, it won't work if the device is not opened. But what's the point ofsending rumble data to the joystick if the device is not opened (so used)by anybody? open() is called whenever a client opens the device, by accessing the evdev node, so I think it should be fine.
I'll test it tonight...