Hm... You shouldn't open those for AI characters, at least not for all of them, all the time. But this depends on your game.
1) There are more than one real player in the game.
2) They have to interact with AI players
3) There is some graphical user interface for the interaction.
What you have here is human players, AI players and "state of the world". If this was classical client-server game, it would have worked like this: Human player sends command to the server, server does the simulation of AI player, sends response.
AI players literally "live" on a server and open connections towards player(s) only when they have to interact with them, either by touching them or by being seen by them.
I'll take the example of the simplest socket 2D game there is: Agar.io .
You have players, they eat each other. You have state of the world (which is, who ate how much, where is the location on the grid of each player etc). In this example, we have 1 human player.
Thing is, the human player only needs to know the part of the world state which effects him/her. Let's say a human player is in position 0 and can see everything in a square of -10,-10 up to 10, 10 on x,y axes.
Basically, what happens, AI character opens a connection towards a player only if its location is such that is in that camera visible square or about to enter it. If it is not seen, it is being simulated on a server. Once it enters the camera, it starts to really exist and has to interface with the open connection to interact with the player. Now, the fun part: you only need one server connection with the single human player to simulate any number of AI players interacting with the human one! Why?
Because AI opponents are on a server and what the player doesn't see, (s)he has to take on trust.
I could tell you that I am answering this question to you from the beach bar in Hawaii, there is no way for you to check. And that is true until you actually look (move the camera where I can actually be seen) in which case I have to prove it to you by opening socket connection to you and actually sending you a "picture". Basically, you could make AI character be in the first place and say it had eaten 100 other players and grown 10 times and it will be true until player actually comes to the location where the virtual AI player can be seen. Then your game would have to open a socket and show that monstrous, extremely good AI player to Human player. And then it turns from invisible simulation of 100 players to visible simulation of 10 visible AI players + human player.