code: func (api *PrivateAdminAPI) StartWS(host *string, port *int, allowedOrigins *string, apis *string) (bool, error) {
  	api.node.lock.Lock()
  	defer api.node.lock.Unlock()
  
  	if api.node.wsHandler != nil {
  		return false, fmt.Errorf("WebSocket RPC already running on %s", api.node.wsEndpoint)
  	}
  
  	if host == nil {
  		h := DefaultWSHost
  		if api.node.config.WSHost != "" {
  			h = api.node.config.WSHost
  		}
  		host = &h
  	}
  	if port == nil {
  		port = &api.node.config.WSPort
  	}
  
  	origins := api.node.config.WSOrigins
  	if allowedOrigins != nil {
  		origins = nil
  		for _, origin := range strings.Split(*allowedOrigins, ",") {
  			origins = append(origins, strings.TrimSpace(origin))
  		}
  	}
  
  	modules := api.node.config.WSModules
  	if apis != nil {
  		modules = nil
  		for _, m := range strings.Split(*apis, ",") {
  			modules = append(modules, strings.TrimSpace(m))
  		}
  	}
  
  	if err := api.node.startWS(fmt.Sprintf("%s:%d", *host, *port), api.node.rpcAPIs, modules, origins, api.node.config.WSExposeAll); err != nil {
  		return false, err
  	}
  	return true, nil
  }
docs: // StartWS starts the websocket RPC API server.